<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无码麻豆| 日本卡1卡2卡三卡免费| 亚洲成_人网站图片| 最近中文字幕2019高清免费| 国产亚洲精aa成人网站| 一级做a爰片久久毛片免费陪| 毛片免费全部播放一级| 亚洲日本成本人观看| 大学生高清一级毛片免费| 亚洲乱妇老熟女爽到高潮的片| 在线a人片天堂免费观看高清| 亚洲黄页网在线观看| 免费黄网在线观看| 亚洲AV无码一区二区三区电影| 韩国18福利视频免费观看| 豆国产96在线|亚洲| 亚洲七七久久精品中文国产| 中国精品一级毛片免费播放| 亚洲av午夜成人片精品网站| 最近免费中文字幕大全免费| 亚洲另类视频在线观看| 四虎国产精品免费久久| 亚洲欧美一区二区三区日产| 免费在线精品视频| 中文字幕在线免费观看视频| 亚洲网站视频在线观看| 在线观看免费人成视频色| 久久精品国产亚洲av瑜伽| 亚洲伊人久久精品影院| 18女人腿打开无遮掩免费| 亚洲人成欧美中文字幕| 国产亚洲精品自在线观看| 在线看无码的免费网站| 亚洲a∨无码精品色午夜| 亚洲乱亚洲乱妇无码麻豆| 99久久国产热无码精品免费 | 国产亚洲精品a在线无码| 2015日韩永久免费视频播放| 久久亚洲欧美国产精品| 77777亚洲午夜久久多人| 色片在线免费观看|