美文网首页
Transactional

Transactional

作者: 红烧鸡翅膀_我喜欢吃 | 来源:发表于2020-04-01 13:50 被阅读0次

    1、Spring默认情况下会对(RuntimeException)及其子类来进行回滚,在遇见Exception及其子类的时候则不会进行回滚操作。check异常不管。

    2、@Transactional既可以作用于接口,接口方法上以及类已经类的方法上。但是Spring官方不建议接口或者接口方法上使用该注解,因为这只有在使用基于接口的代理时它才会生效。另外, @Transactional 注解应该只被应用到 public 方法上,这是由 Spring AOP 的本质决定的。如果你在 protected、private 或者默认可见性的方法上使用 @Transactional 注解,这将被忽略,也不会抛出任何异常。 Spring默认使用的是jdk自带的基于接口的代理,而没有使用基于类的代理CGLIB。

    3、本类内this调用注解失效,@Transactional注解底层使用的是动态代理来进行实现的,如果在调用本类中的方法,此时不添加@Transactional注解,而是在调用类中使用thisi调用本类中的另外一个添加了@Transactional注解,此时this调用的方法上的@Transactional注解是不起作用的。

    4、a. 让Exception异常也进行回滚操作,在调用该方法前加上: @Transactional(rollbackFor = Exception.class)

    b. 让RuntimeException不进行回滚操作,在调用该方法前加上: @Transactional(rollbackFor = RuntimeException.class)

    c、在整个方法运行前就不会开启事务: @Transactional(propagation=Propagation.NOT_SUPPORTED,readOnly=true),这样就做成一个只读事务

    d、查看该事务是否被支持:TransactionSynchronizationManager.isActualTransactionActive()  

    返回true: 是

    相关文章

      网友评论

          本文标题:Transactional

          本文链接:https://www.haomeiwen.com/subject/xioouhtx.html