Spring事务失效的场景
异常捕获处理
在方法中通过异常捕获将异常处理掉了
就不会触发异常回滚
如果需要捕获的同时进行事务管理
可以在catch块中进行手动抛出异常
抛出检查异常
在方法上抛出检查异常
但Spring默认只会回滚Runtime异常
需要在@Transactional注解中设置rollbackfor=需要回滚的异常
非public方法(或使用final修饰)
因为Spring事务使用AOP实现
无论是CGLIB的继承代理
还是动态代理的接口代理都无法代理非public方法
方法的内部调用
因为内部调用使用this对象调用
并没有使用代理对象,不会走AOP被代理
需要注入自己解决
没有被Spring管理
略
多线程调用
Spring的事务是通过连接数据库实现
如果不在同一个线程内,那数据库的连接自然也不是一个
编程式事务
通过transactionTemplate.execute()方法控制事务
本站资源均来自互联网,仅供研究学习,禁止违法使用和商用,产生法律纠纷本站概不负责!如果侵犯了您的权益请与我们联系!
转载请注明出处: 免费源码网-免费的源码资源网站 » Java面试题:Spring事务失效的场景
发表评论 取消回复