在springBoot與quartz 整合中 @Transaction 失效


問題1::springBoot在與quartz 整合時,使用@Transaction 注解時事務失效

解決方案:創建一個類使用@component被spring管理 ,使用@Transaction標識主要方法,然后使用quartz 的方法中調用這個類中的方法

問題2: 同一個類中,不加@Transaction注解的方法調用加@Transaction注解的方法  事務失效

問題產生的原因: spring 在掃描bean的時候會掃描方法上是否包含@Transaction注解,如果包含,spring會為這個bean動態地生成一個子類(即代理類,proxy),代理類是繼承原來那個bean的。此時,當這個有注解的方法被調用的時候,實際上是由代理類來調用的,代理類在調用時增加異步作用。然而,如果這個有注解的方法是被同一個類中的其他方法調用的,那么該方法的調用並沒有通過代理類,而是直接通過原來的那個bean,所以就沒有增加事務作用,我們看到的現象就是@Transaction注解無效。

解決方案:將不需要事務管理的類抽離出來創建一個類,然后調用被事務管理的類方法

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM