前言

Spring事务控制基于注解的方式比xml方式要简便很多,我写的基于注解的实例,是在基于xml事务控制实例的基础上做修改的。
建议先看注解方式实现的事务控制:
【Spring深入学习】Spring的事务控制——基于XML

【Spring深入学习】Spring的事务控制——基于注解

(一)用Spring注解的方式修改业务代码

基于上一篇的代码,我们首先把配置在appliactionContext.xml的Bean注释掉,然后用注解的方式实现对象的依赖注入:
【Spring深入学习】Spring的事务控制——基于注解_java
还需要在配置文件中添加一个组件扫描

 <!--组件扫描-->
 <context:component-scan base-package="com.cdd.*"/>

(二)用Spring注解的方式对业务进行事务控制

这里用到的注解是@Transactional
我们可以直接在想要进行事务控制的业务层方法上添加该注解:
【Spring深入学习】Spring的事务控制——基于注解_spring_02
添加该注解以后还需要在配置文件中,配置事务注解驱动

<!--事务的注解驱动-->
<tx:annotation-driven transaction-manager="transactionManager"/>

然后就可以了,是不是很简洁?
基于xml的事务控制的配置文件与基于注解的事务控制的配置文件对比:
【Spring深入学习】Spring的事务控制——基于注解_spring_03
基于注解的实例代码我已经上传到github上了,注意分支:
https://github.com/IsMrChen/Practice/tree/springtest/spring
【Spring深入学习】Spring的事务控制——基于注解_java_04

总结一下基于注解的Spring的事务控制配置要点

其实就三步:

  1. 平台事务管理器的配置(xml方式)
  2. 事务通知配置(@Transactional注解配置)
  3. 事务注解驱动的配置<tx:annotation-driven>

在@Transactional内部我们也可以像xml中配置一样,给它设定一些事务属性:

    @Transactional(isolation = Isolation.READ_COMMITTED, readOnly = false)//进行事务控制

同时我们还可以在类上添加@Transactional注解,那么这个类中所有的方法都相当于有事务控制,如果内部某方法需要特殊设定,也可以直接再该方法上再使用注解,事务控制的属性是会就近原则
例如:
【Spring深入学习】Spring的事务控制——基于注解_spring_05
OK,相比于Spring的xml事务控制,注解的方法是不是更加简单?真香~