最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

spring?mvc?AOP切面方法未執(zhí)行的一種情況的分析和處理過程

 更新時間:2024年05月11日 10:25:35   作者:請叫我大師兄_  
這篇文章主要介紹了spring?mvc?AOP切面方法未執(zhí)行的一種情況的分析和處理,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

spring mvc AOP 在service里面,嵌套調用一個觸發(fā)切面方法,然而并沒有觸發(fā)切面方法執(zhí)行,但在controller里面直接調用這個方法,就可以觸發(fā)切面方法。

在springmvc里面,使用到AOP--面向切面編程,在切面做一些統(tǒng)一的事情。

遇到的情況是這樣的

1:在controller里面直接調用service里面的save方法,那么就會觸發(fā)切面的方法。

2:在controller里面調用service的其他方法,其他方法,最終會間接的調用這個save方法,這個時候,就不會觸發(fā)切面方法。

dsx

大師兄

大師兄

首先,上面的切面表達式是沒有問題的,肯定能切到對應的方法的。

這個切面,就是去統(tǒng)一刷新一下緩存,所以,只需要在涉及到修改數據庫的時候,才需要執(zhí)行這個切面的方法。

如果,沒修改數據庫的話,就不需要去刷新緩存。就這么一個需求。

解決方法

原來的間接調用save方法,是如下樣式的。

因為這個save()方法就在同一個類里面所以,就可以直接調用,不嫌麻煩的,還可以在前面加個this。

這么使用的話,是不會觸發(fā)切面方法執(zhí)行的。

大師兄

修改如下:

在service類里面,使用resource注解,把自己再給引入一下,然后使用他去調用目標方法,觸發(fā)切面方法。

大師兄

大師兄

在自己的類里面,再把自己給引入進來,在需要觸發(fā)切面方法的時候,就是這個selfService.目標方法(),來觸發(fā)切面去執(zhí)行切面方法。

原理

看別人說這個使用ioc注入進來的這個service已經變成了一個代理啦,這個AOP的實現就是這個代理模式來實現的,你要是在類里面使用this來調用方法的話,就跟這個代理沒關系啦,切面的觸發(fā),都是service的對應代理去觸發(fā)的,所以,你在service里面直接調用觸發(fā)切面的方法,是達不到這個效果的,所以,需要使用這個ioc注入的代理對象,就會觸發(fā)切面的方法啦。

大師兄

看這個圖的執(zhí)行結果,可驗證如下幾個結論。

1,spring使用的aop是基于cglib來實現的。

2,交給IOC注入到容器的bean,我們使用的那個service是代理對象,不是原始對象。

注意

你這個不是在自己的類里面把自己又注入一次么。

所以,你在使用這個selfService的時候,小心點,避免陷入自己調用自己,然后,陷入無限循環(huán)的尷尬境地。

我想老鐵不應該弄出這么簡單的bug吧。

總結

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • 自定義注解實現Spring容器注入Bean方式(類似于mybatis的@MapperScans)

    自定義注解實現Spring容器注入Bean方式(類似于mybatis的@MapperScans)

    本文介紹了如何通過自定義注解@MyService和@MyServiceScans在SpringBoot項目中自動將指定包下的類注入Spring容器,詳細解釋了創(chuàng)建自定義注解、定義包掃描器ClassPathBeanDefinitionScanner的作用與實現
    2024-09-09
  • Java多線程應用循環(huán)輸出ABC方式

    Java多線程應用循環(huán)輸出ABC方式

    這篇文章主要介紹了Java多線程應用循環(huán)輸出ABC方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-05-05
  • 淺談IDEA2018打包可執(zhí)行jar包的流程

    淺談IDEA2018打包可執(zhí)行jar包的流程

    這篇文章主要介紹了淺談IDEA2018打包可執(zhí)行jar包的流程,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-06-06
  • Java類型通配符應用實戰(zhàn)分析

    Java類型通配符應用實戰(zhàn)分析

    這篇文章主要介紹了Java類型通配符應用實戰(zhàn),簡單分析了Java類型通配符概念、原理并結合實例形式給出了Java類型通配符相關使用技巧,需要的朋友可以參考下
    2019-07-07
  • Spring Bean的Scope作用域詳解

    Spring Bean的Scope作用域詳解

    本文介紹了Spring框架中的BeanScope(作用域),包括Singleton(單例)和Prototype(原型)兩種常見作用域的定義、生命周期和適用場景
    2025-01-01
  • Java Stream map, Collectors(toMap, toList, toSet, groupingBy, collectingAndThen)使用案例

    Java Stream map, Collectors(toMap, toLis

    這篇文章主要介紹了Java Stream map, Collectors(toMap, toList, toSet, groupingBy, collectingAndThen)使用案例,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-09-09
  • Java語言實現簡單FTP軟件 FTP軟件遠程窗口實現(6)

    Java語言實現簡單FTP軟件 FTP軟件遠程窗口實現(6)

    這篇文章主要為大家詳細介紹了Java語言實現簡單FTP軟件,FTP軟件遠程窗口的實現方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • Java服務cpu100%的解決過程分享

    Java服務cpu100%的解決過程分享

    最近一個任務是優(yōu)化一個導出的功能,但是點擊功能時發(fā)現,程序長時間無反應,過一段時間又有反應,通過查看服務的監(jiān)控發(fā)現,服務存在cpu持續(xù)100%的情況,下面分享一下我的處理方案和過程,需要的朋友可以參考下
    2024-05-05
  • java迭代器中刪除元素的實例操作詳解

    java迭代器中刪除元素的實例操作詳解

    在本篇內容里小編給各位分享了一篇關于java迭代器中刪除元素的實例操作詳解內容,有興趣的朋友們可以學習下。
    2021-01-01
  • springboot使用ThreadPoolTaskExecutor多線程批量插入百萬級數據的實現方法

    springboot使用ThreadPoolTaskExecutor多線程批量插入百萬級數據的實現方法

    這篇文章主要介紹了springboot利用ThreadPoolTaskExecutor多線程批量插入百萬級數據,本文通過示例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-02-02

最新評論

朔州市| 翁源县| 蒙城县| 新宁县| 儋州市| 九寨沟县| 遵化市| 新竹市| 铁岭县| 双江| 台安县| 南部县| 如皋市| 洞口县| 海晏县| 北碚区| 潞西市| 屏南县| 韶关市| 崇信县| 乐安县| 尼勒克县| 蒲江县| 类乌齐县| 淮安市| 莒南县| 海原县| 桐梓县| 江阴市| 青岛市| 镇赉县| 东安县| 西平县| 鄢陵县| 余江县| 安吉县| 舟山市| 敖汉旗| 永靖县| 邵阳县| 霸州市|