码迷,mamicode.com
首页 > 编程语言 > 详细

在springBoot与quartz 整合中 @Transaction 失效

时间:2019-06-11 22:24:34      阅读:271      评论:0      收藏:0      [点我收藏+]

标签:产生   解决方案   art   原来   就是   nsa   失效   col   通过   

   问题1::springBoot在与quartz 整合时,使用@Transaction 注解时事务失效

解决方案:创建一个类使用@Compent 被spring管理 ,使用@Transaction标识主要方法,然后使用quartz 的方法中调用这个类中的方法

问题2: 同一个类中,不加@Transaction注解的方法调用加@Transaction注解的方法  事务失效

问题产生的原因: spring 在扫描bean的时候会扫描方法上是否包含@Transaction注解,如果包含,spring会为这个bean动态地生成一个子类(即代理类,proxy),代理类是继承原来那个bean的。此时,当这个有注解的方法被调用的时候,实际上是由代理类来调用的,代理类在调用时增加异步作用。然而,如果这个有注解的方法是被同一个类中的其他方法调用的,那么该方法的调用并没有通过代理类,而是直接通过原来的那个bean,所以就没有增加事务作用,我们看到的现象就是@Transaction注解无效。

解决方案:将不需要事务管理的类抽离出来创建一个类,然后调用被事务管理的类方法

 

在springBoot与quartz 整合中 @Transaction 失效

标签:产生   解决方案   art   原来   就是   nsa   失效   col   通过   

原文地址:https://www.cnblogs.com/lijing1/p/11006274.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!