文章目录
- 1.@Transactional注解在非public方法上
- 2.@Transactional使用propagation设置错误(有3种会失效)
- 3.@Transactional使用rollbackFor设置错误
- 4.A方法没有使用@Transactional调用了B(有被注解)方法
- 5.try catch了异常
- 6.数据库引擎不支持事务
参考地址:https://baijiahao.baidu.com/s?id=1661565712893820457&wfr=spider&for=pc
1.@Transactional注解在非public方法上
在使用SpringAop代理时,TransactionInterceptor事务拦截器会在目标方法前后进行拦截,CglibAopProxy的intecept方法或JdkDynamicAopProxy的invoke方法会间接调用回调资源的一个计算事务属性(computeTransactionAttribute)方法,检查目标方法如果不是public方法,不会获取@Transactional及属性
2.@Transactional使用propagation设置错误(有3种会失效)
1.PROPAGATION_SUPPORTS:如果当前存在事务,加入事务;如果当前没有事务,非事务执行
2.PROPAGATION_NOT_SUPPORTED:以非事务方式执行;如果当前存在事务,则挂起当前事务
3.PROPAGATION_NEVER:以非事务方式执行;如果当前存在事务抛出异常
3.@Transactional使用rollbackFor设置错误
需要指定Exception的子类
4.A方法没有使用@Transactional调用了B(有被注解)方法
略
5.try catch了异常
略
6.数据库引擎不支持事务
略