本文为博主辛苦总结,希望自己以后返回来看的时候理解更深刻,也希望可以起到帮助初学者的作用.

转载请注明 出自 : luogg的博客园 谢谢配合!

Spring_day03

一.事务

1.1 事务

事务:是逻辑上的一组操作,要么全部成功,要么全部失败

事务特性 :

  • ACID:
  • 原子性: 事务不可分隔
  • 一致性: 事务执行的前后,数据完整性保持一致.
  • 隔离性: 一个事务执行的时候,不应该收到其他事务的干扰
  • 持久性: 一旦结束,数据永久的保存到数据库

1.2 spring的事务管理

分层开发: 事务处于service层

Spring的事务管理分成两类:

  • 编程式事务管理:
  • 手动编写代码完成事务管理.
  • 声明式事务管理:
  • 不需要手动编写代码,配置

1.3基于注解的事务管理

1.先配置xml
  1. <!-- 引入外部属性文件. -->
  2. <context:property-placeholder location="classpath:jdbc.properties"/>
  3. <!-- 配置c3p0连接池 -->
  4. <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
  5. <property name="driverClass" value="${jdbc.driver}"/>
  6. <property name="jdbcUrl" value="${jdbc.url}"/>
  7. <property name="user" value="${jdbc.user}"/>
  8. <property name="password" value="${jdbc.password}"/>
  9. </bean>
  10. <!-- 业务层类 -->
  11. <bean id="accountService" class="cn.itcast.spring3.demo4.AccountServiceImpl">
  12. <!-- 在业务层注入Dao -->
  13. <property name="accountDao" ref="accountDao"/>
  14. </bean>
  15. <!-- 持久层类 -->
  16. <bean id="accountDao" class="cn.itcast.spring3.demo4.AccountDaoImpl">
  17. <!-- 注入连接池的对象,通过连接池对象创建模板. -->
  18. <property name="dataSource" ref="dataSource"/>
  19. </bean>
  20. <!-- 事务管理器 -->
  21. <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
  22. <property name="dataSource" ref="dataSource"/>
  23. </bean>
  24. <!-- 开启注解的事务管理 -->
  25. <tx:annotation-driven/>
2.在需要使用注解的方法前边加上注解

@Transactional

3.测试

注解开发

全部使用注解很方便, 但是有些东西还是需要在xml中写的,比如事务管理,连接池的配置.

注解总结 :

  • @Component("")

  • @Service("") 装配Bean,标示为service类

  • @Repository("") 装配Bean,标示为dao类

  • @Controller("") 装配Bean,标示为controller类

  • 去扫描注解 装配的Bean

    <context:component-scan base-package="com.luogg.demo1"></context:component-scan>

  • @Autowired @Qualifier("userDao"): 在类中注入Bean

  • @Aspect 定义切面

  • @Before("execution(* com.luogg.demo1.UserDao.*(..))") 前置增强

  • 开启自动生成代理

    <aop:aspectj-autoproxy/>

  • @RunWith(SpringJUnit4ClassRunner.class)

    @ContextConfiguration("classpath:applicationContext.xml")

    单元测试注解

  • @Transactional 声明事务

Spring学习_day03_事务的更多相关文章

  1. Spring学习8-Spring事务管理

      http://blog.sina.com.cn/s/blog_7ffb8dd501014e0f.html   Spring学习8-Spring事务管理(注解式声明事务管理) 标签: spring注 ...

  2. Spring学习之事务注解@Transactional

    今天学习spring中的事务注解,在学习Spring注解事务之前需要明白一些事务的基本概念: 事务:并发控制的单位,是用户定义的一个操作序列.这些操作要么都做,要么都不做,是一个不可分割的工作单位.通 ...

  3. Spring学习8-Spring事务管理(编程式事务管理)

    一.Spring事务的相关知识   1.事务是指一系列独立的操作,但在概念上具有原子性. 比如转账:A账号-100, B账号+100,完成.这两个操作独立是没问题的. 但在逻辑上,要么全部完成,要么一 ...

  4. Spring 学习7 -事务

    1 初步理解 理解事务之前,先讲一个你日常生活中最常干的事:取钱. 比如你去ATM机取1000块钱,大体有两个步骤:首先输入密码金额,银行卡扣掉1000元钱:然后ATM出1000元钱.这两个步骤必须是 ...

  5. Spring学习8-Spring事务管理(注解式声明事务管理)

    步骤一.在spring配置文件中引入<tx:>命名空间 <beans xmlns="http://www.springframework.org/schema/beans& ...

  6. Spring学习8-Spring事务管理(AOP/声明式式事务管理)

    一.基础知识普及 声明式事务的事务属性: 一:传播行为 二:隔离级别 三:只读提示 四:事务超时间隔 五:异常:指定除去RuntimeException其他回滚异常.  传播行为: 所谓事务的传播行为 ...

  7. spring学习 8-面试(事务,解决线程安全)

    1.介绍一下Spring的事物管理 参考:Spring 学习7 -事务 2.Spring如何处理线程并发问题    Spring使用ThreadLocal解决线程安全问题 参考:Spring学习11- ...

  8. spring学习总结(mybatis,事务,测试JUnit4,日志log4j&slf4j,定时任务quartz&spring-task,jetty,Restful-jersey等)

    在实战中学习,模仿博客园的部分功能.包括用户的注册,登陆:发表新随笔,阅读随笔:发表评论,以及定时任务等.Entity层设计3张表,分别为user表(用户),essay表(随笔)以及comment表( ...

  9. Java框架spring 学习笔记(十八):事务管理(xml配置文件管理)

    在Java框架spring 学习笔记(十八):事务操作中,有一个问题: package cn.service; import cn.dao.OrderDao; public class OrderSe ...

随机推荐

  1. 安装elasticsearch遇到的签名和目标被配置多次的问题

    命中:6 http://ppa.launchpad.net/ondrej/php/ubuntu bionic InRelease获取:7 http://packages.elastic.co/elas ...

  2. 【Cloud Foundry】Could Foundry学习(一)——Could Foundry浅谈

    在阅读的过程中有不论什么问题.欢迎一起交流 邮箱:1494713801@qq.com    QQ:1494713801 Cloud Foundry是VMware推出的业界第一个开源PaaS云平台.他包 ...

  3. wpf slider进度条的样式模板,带有进度颜色显示

    效果图: 仅仅需在前台加上这段代码就可以: <UserControl.Resources> <!--笔刷--> <LinearGradientBrush x:Key=&q ...

  4. HR系统-人员申请单

    部门在人员缺失时,须要进行人员申请, 申请会涉及到单据的建立及审核.单据建立界面例如以下:

  5. LeetCode 804. Unique Morse Code Words (唯一摩尔斯密码词)

    题目标签:String 题目给了我们 对应每一个 字母的 morse 密码,让我们从words 中 找出 有几个不同的 morse code 组合. 然后只要遍历 words,把每一个word 转换成 ...

  6. Xamarin nuget package update 错误

    update xamarin.Forms包时出现错误: 'The specified path, file name, or both are too long. The fully qualifie ...

  7. js实现伪音乐盒

    支持快进 <div class="music-part"> <div class="box-bg"></div> <d ...

  8. GammaRay观察Qt程序的运行状况

    GammaRay是KDAB开发的Qt应用程序的软件内省工具.利用QObject内省机制,它允许您在运行时观察和操作应用程序.这既可以在工作站本地使用,也可以在嵌入式目标上远程使用. 通过扩充指令级调试 ...

  9. PCB 模拟Windows管理员域帐号安装软件

    在我们PCB行业中,局域网的电脑一般都会加入域控的,这样可以方便集中管理用户权限,并可以对访问网络资源可以进行权限限制等. 由于加入了域控对帐号权限的管理,这样一来很多人都无权限安装软件,比如:PCB ...

  10. vue学习记录(一)—— vue开发调试神器vue-devtools安装

    网上有些贴子少了至关重要的一步导致我一直没装上, 切记!!install后还需build,且install和build都在vue-devtools文件夹内执行 github下载地址 点击跳转 具体步骤 ...