spring学习8-事务控制总结
作者:互联网
spring学习8-事务控制总结
默认那种异常会回滚事务:默认只有运行时异常会回滚事务,可以配置rollbackfor来指定回滚异常类型。
一、基于配置文件配置事务控制
1.1配置事务管理器
在容器中配置事务管理器,mybatis和jdbc对应的事务管理器是DataSourceTransactionManager
1.2配置事务属性
利用<tx:advice>
标签配置事务的属性,包括回滚异常,事务的传播行为等
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="find*" read-only="true"/>
<!--指定事务的隔离级别,配置默认值是使用数据库的配置-->
<tx:method name="*" isolation="DEFAULT" rollback-for="Exception"/>
</tx:attributes>
</tx:advice>
1.3利用aop配置事务作用的方法
<aop:config>
<!--切点表达式要写详细,不能包含事务管理器等类,否则会报循环依赖-->
<aop:advisor advice-ref="txAdvice" pointcut="execution(public * com.lyy.service.*.*(..))"/>
</aop:config>
二、基于注解配置事务控制
2.1在配置类上开启注解事务支持
@EnableTransactionManagement
2.2配置事务管理器
利用@Bean
注解给容器中加入事务管理器
2.3利用@Transactional
注解指定哪个方法需要控制事务
三、编程式手动控制事务
在需要手动控制事务的类中注入事务管理器,利用事务管理器的方法来手动控制事务
@Autowired
private PlatformTransactionManager transactionManager;
public void testTransaction() throws Exception {
TransactionDefinition definition=new DefaultTransactionDefinition();
TransactionStatus transactionStatus = transactionManager.getTransaction(definition);
try {
User user=new User();
user.setId("1");
user.setAge(10);
userMapper.updateById(user);
int i=1;
if(i>0){
throw new Exception("受检异常");
}
user.setAge(20);
userMapper.updateById(user);
transactionManager.commit(transactionStatus);
} catch (Exception e) {
transactionManager.rollback(transactionStatus);
}
System.out.println("测试完成");
}
标签:总结,事务,管理器,spring,配置,回滚,user,transactionManager 来源: https://www.cnblogs.com/chengxuxiaoyuan/p/15394502.html