1 spring事务处理
spring事务配置有多种方式,这里以全注解方式进行介绍。
1.1 前提
spring项目已正常跑通;maven项目;
1.2 spring配置文件修改
增加事务管理器:
<!--TransactionManager定义 -->
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource1" />
</bean>
<bean id="transactionTemplate"
class="org.springframework.transaction.support.TransactionTemplate">
<property name="transactionManager" ref="transactionManager" />
</bean>
<!-- enables scanning for @Transactionalannotations -->
<tx:annotation-driven transaction-manager="transactionManager" />
<tx:annotation-driven>一共有四个属性如下,
Ø mode:指定Spring事务管理框架创建通知bean的方式。可用的值有proxy和aspectj。前者是默认值,表示通知对象是个JDK代理;后者表示Spring AOP会使用AspectJ创建代理
Ø proxy-target-class:如果为true,Spring将创建子类来代理业务类;如果为false,则使用基于接口的代理。(如果使用子类代理,需要在类路径中添加CGLib.jar类库)
Ø order:如果业务类除事务切面外,还需要织入其他的切面,通过该属性可以控制事务切面在目标连接点的织入顺序。
Ø transaction-manager:指定到现有的PlatformTransaction Manager bean的引用,通知会使用该引用
1.3 增加@Transactional注解
在需要的函数上增加:
1. @Transactional
2. public void test() throws Exception {
3. doDbStuff1();
4. doDbStuff2();//假如这个操作数据库的方法会抛出runtimeexception,现在方法doDbStuff1()对数据库的操作会回滚。
5. }
1.4 注意事项
1. 在需要事务管理的地方加@Transactional