SpringMVC中使用aop註解無效的問題

2021-07-03 17:30:27 字數 830 閱讀 1670

這兩天學習spring,用了springmvc的註解,然後配置事務和aop,發現沒用。和別的人討論了下,大致得出了乙個結論:這大約是spring上下文的問題。

另外以上所述的是對controller進行切面時的配置,如果是對service進行切面,那麼

解釋:

1.springmvc這個框架很好用,沒問題,他的註解也簡化了很多的配置,但是請注意@controller和@service都是springmvc框架包裡面的,也就是說,這些類的例項化以及注入也是由springmvc這個框架完成的(確切的來說是這個框架自己有的上下文的ioc容器完成的)。

2.而對aop和事務的支援是spring框架本身完成的,是spring框架的應用上下文所掃瞄並處理的。

但關鍵的是以上假設不成立,總的來說springmvc的應用上下文的 「 父 」 上下文才是spring的應用上下文。那麼這個也就是說spring的應用上下文初始化完成的時候,它開始掃瞄到底哪些bean用了aspectj的註解,哪些用了transactional的註解,但是利用springmvc註解配置的這些bean它是找不到的,因為用了這些註解的bean還沒有被例項化甚至是還沒有被裝載,為什麼呢?因為管理這些bean的springmvc的上下文可能還沒有完成初始化。ok,既然spring的上下文找不到到底哪些bean應用了註解,那他自然也沒有辦法給這些bean提供宣告式aop和事務的支援了。

至於為什麼springmvc的應用上下文的 「 父 」 上下文才是spring的應用上下文,這裡有大牛為我們詳解:

這個是坑點啊~~~

另外,spring中的切面類固然要用@aspect標註,但也不要忘了用@componet標註,這樣才能被註冊到容器中

springmvc中使用aop實現登入驗證

在專案中,有的api介面需要進行使用者是否登入的驗證,一開始就是編寫乙個公共方法,然後在需要使用的地方呼叫一下。後來覺得不方便,有不少地方需要呼叫,都要這麼手動copy一下。於是琢磨看看能否使用aop實現。首先,在 servlet.xml配置檔案中增加aop註解支援 定義切面 aspect comp...

Spring中使用AOP例子

實踐了 指南 中的例子165頁到169頁,最後補充乙個action,public class aopmethodcosttimeaction extends actionsupport 具體 已經放到gmail郵箱了。僅僅從這個例子總結一下 1,配置檔案中需要 mypointcutadvisor c...

Spring MVC中使用logback的日誌配置

一開始在springmvc中就配置了logback.xml,但是由於放置的路徑不正確,不知道怎麼啟動這個日誌系統。後來在網上看了別人的說明,logback.xml配置都差不多,只需要放置src包下面就會自動啟動日誌了。需要匯入的jar包有 logback core 0.9.29.jar,logbac...