【Java】@Transactional 事务注解
发布时间:2024年01月18日
Spring事务的回滚机制
Spring的AOP即声明式事务管理默认是针对unchecked exception回滚。Spring的事务边界是在调用业务方法之前开始的,业务方法执行完毕之后来执行commit or rollback(Spring默认取决于是否抛出runtimeException)。
- 在@Transactional注解的方法中,再调用本类中的其他方法method2时,那么method2方法上的@Transactional注解是不!会!生!效!的!但是加上也并不会报错
- 如果你在方法中有try{}catch(Exception e){}处理,那么try里面的代码块就脱离了事务的管理,若要事务生效需要在catch中throw new RuntimeException (“xxxxxx”); 或者手动回滚TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
- @Transactional注解的方法必须是公共方法,就是必须是public修饰符!!!【原因:因为JVM的动态代理是基于接口实现的,通过代理类将目标方法进行增强,没有权限访问那么你让我怎么进行】
1、就是@Transactional注解保证的是每个方法处在一个事务,如果有try一定在catch中抛出运行时异常。
2、方法必须是public修饰符。否则注解不会生效,但是加了注解也没啥毛病,不会报错,只是没卵用而已。
3、this.本方法的调用,被调用方法上注解是不生效的,因为无法再次进行切面增强。
文章来源:https://blog.csdn.net/qq_40110781/article/details/135651623
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:chenni525@qq.com进行投诉反馈,一经查实,立即删除!