企业门户网站设计,免费下载百度,一个网站完整的html代码,自建博客wordpressSpring事务大部分都是通过AOP实现的#xff0c;所以事务失效的场景大部分都是因为AOP失效#xff0c;AOP基于动态代理实现的
1.方法没有被public修饰
原因#xff1a;Spring会为方法创建代理、AOP添加事务通知前提条件是该方法时public的。
2.类没有被Spring容器所托管
…Spring事务大部分都是通过AOP实现的所以事务失效的场景大部分都是因为AOP失效AOP基于动态代理实现的
1.方法没有被public修饰
原因Spring会为方法创建代理、AOP添加事务通知前提条件是该方法时public的。
2.类没有被Spring容器所托管
Spring没有办法给类生成动态代理
3.不正确的异常捕获
原因事务通知只有捉到了目标抛出的异常才能进行后续的回滚如果目标自己处理异常事务通知AOP无法捕捉到异常不会进行回滚事务失效。
4.在同一个类中的方法调用
a方法调用了当前对象中的b方法没有调用代理对象的b方法
5.事务传播性设置有误
Spring有7种事务传播特性其意义是确定多个具有事务控制的service相互调用时所形成的的事务边界下表列出Spring的7种事务传播特性以及含义
传播特性含义REQUIREDSpring中默认的事务传播特效表示必须存在事务如果外层方法存在事务则用外层方法的事务否则开启一个新的事务REQUIRES_NEW当前方法会开启一个新事物如果外层方法存在事务则会将外层方法的事务挂起直到当前方法的事务提交或回滚才会恢复执行SUPPORTS可以不存在事务如果有事务则使用当前事务没有则作为一个普通方法运行NOT_SUPPORTED不会存在事务如果外层方法有事务则会挂起MANDATORY强制事务执行如果没有事务则抛异常NEVER强制非事务执行有事务就抛异常NESTED如果外层方法存在事务则创建一个保存点如果当前方法没有异常则统一到外层事务中提交如果当前方法存在异常则外层事务也会回滚如果外层事务出现异常只会回滚外层事务当前方法不会回滚
6.rollback-for配置有误通常是runtimeException需要回滚
7.没有配置事务管理器
默认自动配置SSM项目中需要手动配置
8.数据库不支持事务
如果使用的数据库为MySQL并且选用了MyISAM存储引擎则Spring的事务就会失效。