【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
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。