<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      解決AOP嵌套失效的問題

      一、問題起源

      我們定義了一個注解如下:

       1 /**
       2  * AOP的切面嵌套測試-注解
       3  *
       4  * @author suxiaolong
       5  */
       6 @Target({ElementType.PARAMETER, ElementType.METHOD})
       7 @Retention(RetentionPolicy.RUNTIME)
       8 public @interface AnnotationNest {
       9 
      10     /**
      11      * 模塊名稱
      12      *
      13      * @return 模塊名稱
      14      */
      15     String moduleName();
      16 
      17 }

      我們這樣使用它——將注解加到同一個類的多個方法中,這多個方法中存在相到調用:

       1 @Component
       2 public class AnnotationNestClass {
       3     @AnnotationNest(moduleName = "parent")
       4     public void parent(String string) throws Exception {
       5         System.out.println("parent-body");
       6         this.child(string);    
       7 }
       8 
       9     @AnnotationNest(moduleName = "child")
      10     public void child(String string) {
      11         System.out.println("child-body");
      12 }
      13 }

      調用:

       1 @RestController
       2 @RequestMapping(value = "/user")
       3 public class SignController {
       4     @Autowired
       5     AnnotationNestClass annotationNestClass;
       6 
       7     @GetMapping(value = "/query")
       8     public void queryUser() throws Exception{    
       9         annotationNestClass.parent("parent");       
      10     }
      11 }

      如果是上面的這種調用,那么AnnotationNestClass.child()的切面將不能進入。

       

      二、原因

      AnnotationNestClass中用this調用的時候,this代表的不再是代理類,而是當前這個類本身,因而切面無法進入。

       

      三、解決辦法一:自我注入

       

       通過自我注入,這里就能拿到代理類。 

       

      四、解決方法二:通過AopContext.curretnProxy()

       

             這里要注意,AopContxt.currentProxy()方法不能放到多線程中進行獲取,因為AopContext.currentProxy()使用的是LocalThread存儲當前代理,在新的線程中,LocalThread為空,所以就拿不到代理。

             如果想要在多線程環境中獲取當前類的代碼,就在線程外獲取,傳遞給線程去處理,如下所示:

       

       

      五、解決方法三:引入一個新的類

       將方法child()放到一個新的類,這種方法就不推薦了。

       

      六、參考文章

       1、 https://blog.csdn.net/hl_java/article/details/79445799

      2、 https://blog.csdn.net/tjreal/article/details/80714294

      3、 https://blog.csdn.net/Liu_York/article/details/86681933

      4、 http://www.rzrgm.cn/yjmyzz/p/how-to-use-aop-in-multi-thread-spring-application.html

       

      posted @ 2020-05-02 16:21  gudi  閱讀(1906)  評論(0)    收藏  舉報
      主站蜘蛛池模板: www国产无套内射com| 国产在线亚州精品内射| 国产一级r片内射免费视频| 一卡2卡三卡4卡免费网站| 国产尤物精品自在拍视频首页| 2021国产在线视频| 无码专区视频精品老司机 | 熟妇人妻无码中文字幕老熟妇| 成人午夜伦理在线观看| 在线高清免费不卡全码| 青青草国产线观看| 日本亚洲欧洲无免费码在线| 国产不卡免费一区二区| 久久天天躁夜夜躁狠狠85| 双乳奶水饱满少妇呻吟免费看| 亚洲熟女乱一区二区三区| 国产麻豆剧果冻传媒一区| 无码抽搐高潮喷水流白浆| 少妇无码av无码专区| 国产午夜无码视频在线观看 | 亚洲国产成人久久77| 亚洲男人在线天堂| 国产精成人品日日拍夜夜| 午夜福利啪啪片| 久久精品国产男包| 国产线播放免费人成视频播放| 亚洲精品中文av在线| 精品无码国产不卡在线观看| 蜜臀av久久国产午夜| 少妇无码av无码一区| 久久99精品国产麻豆婷婷| 精品午夜久久福利大片| 欧美人伦禁忌dvd放荡欲情| 天峻县| 狠狠色综合tv久久久久久| 亚洲色婷婷综合久久| 亚洲大尺度一区二区三区| 亚洲韩国精品无码一区二区三区| 亚洲精品中文综合第一页| 中文字幕亚洲人妻一区| 国产中文三级全黄|