<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 22, comments - 32, trackbacks - 0, articles - 73
      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理
    1: Java注解@Transactional事務類內調用不生效問題及解決辦法
    在 Spring 的 AOP 代理下,只有目標方法由外部調用,目標方法才由 Spring 生成的代理對象來管理,這會造成自調用問題。
    若同一類中的其他沒有@Transactional 注解的方法內部調用有@Transactional 注解的方法,有@Transactional 注解的方法的事務被忽略,不會發生回滾

    2:場景問題:

    比如:一個class A類 中有三個方法 a(),b(),c(),d()
    @Transactional
    a();
    @Transactional
    b();

    @Transactional
    c(){
    this.a();
    this.b();
    }

    如果同一個類中:
    @Transactional
    d(){
    this.c();
    }

    這樣d() @Transactional 會失效,如果出現異常,事物不會回滾,原因是 @Transactional 使用了spring proxy 代理對象 會被AOP攔截,
    this.c(),這樣調用是本地對象調用,細心同學發現只有 最外層使用代理對象就可以使 @Transactional生效。

    解決方法:
    1:最簡單的一種在自己實現類中注入自己 例:
    @Autowired
    private Class class;

    這樣就可以走spring IOC 容器,出來就是proxy 對象;

    2:第二咱方式是通過AopContext.currentProxy()方式

    增加maven依賴:
    <dependency>
    <groupId>org.aspectj</groupId>
    <artifactId>aspectjweaver</artifactId>
    <version>1.9.5</version>
    </dependency> 如果存在忽略這個

    如果是springboot工程在main 方法上增加 @EnableAspectJAutoProxy(exposeProxy = true,proxyTargetClass = true)
    例:
    @SpringBootApplication
    @EnableAspectJAutoProxy(exposeProxy = true,proxyTargetClass = true)
    public class CommonComponentStartApplication {
    public static void main(String[] args) {
    SpringApplication.run(CommonComponentStartApplication.class, args);
    }
    }

    然后就可以在上面的例子中d()中這樣使用:
    @Transactional
    d(){
    Class class= ((Class)AopContext.currentProxy());
    class.c();
    }

    3:第三種 是通過 applicationcontext 獲取 bean

    總之這幾種方法都是為了得到spring proxy對象,看個人喜好選擇。
    主站蜘蛛池模板: 亚洲成av人片在线天堂无| 久久亚洲日韩看片无码| 永久免费AV无码国产网站| 亚洲妇熟XXXX妇色黄| 男人和女人高潮免费网站| 国产成人精品无码免费看 | a级毛片免费观看视频| 亚洲成AV人网址| 综合偷自拍亚洲乱中文字幕| 毛片大全免费观看| 亚洲欧洲日产国码无码久久99 | 久久99九九国产免费看小说| 亚洲一区二区高清| 色偷偷女男人的天堂亚洲网| 免费毛片a在线观看67194| 亚洲国产高清在线精品一区| aaa毛片免费观看| 免费看a级黄色片| 亚洲天天做日日做天天看| 黄色免费在线网址| 亚洲男人的天堂一区二区| 久久久久久久国产免费看| 亚洲综合色婷婷七月丁香| 亚洲AV成人片无码网站| 日本免费网站视频www区| 亚洲乱码一二三四五六区| 亚洲电影免费在线观看| 亚洲天堂一区在线| 日本二区免费一片黄2019| 成人午夜影视全部免费看| 亚洲Av无码专区国产乱码DVD| 免费一级特黄特色大片| 国产亚洲美女精品久久久2020| 中国好声音第二季免费播放| 亚洲专区先锋影音| 在线观看成人免费| 国产人成网在线播放VA免费| 久久久无码精品亚洲日韩按摩 | 亚洲六月丁香婷婷综合| 国产aa免费视频| 久久综合亚洲色hezyo|