問題1::springBoot在與quartz 整合時,使用@Transaction 注解時事務失效
解決方案:創建一個類使用@component被spring管理 ,使用@Transaction標識主要方法,然后使用quartz 的方法中調用這個類中的方法
問題2: 同一個類中,不加@Transaction注解的方法調用加@Transaction注解的方法 事務失效
問題產生的原因: spring 在掃描bean的時候會掃描方法上是否包含@Transaction注解,如果包含,spring會為這個bean動態地生成一個子類(即代理類,proxy),代理類是繼承原來那個bean的。此時,當這個有注解的方法被調用的時候,實際上是由代理類來調用的,代理類在調用時增加異步作用。然而,如果這個有注解的方法是被同一個類中的其他方法調用的,那么該方法的調用並沒有通過代理類,而是直接通過原來的那個bean,所以就沒有增加事務作用,我們看到的現象就是@Transaction注解無效。
解決方案:將不需要事務管理的類抽離出來創建一個類,然后調用被事務管理的類方法