spring aop攔截controller層失效

因爲Spring的Bean掃描和Spring-MVC的Bean掃描是分開的, 兩者的Bean位於兩個不同的Application, 而且Spring-MVC的Bean掃描要早於Spring的Bean掃描, 所以當Controller Bean生成完成後, 再執行Spring的Bean掃描,Spring會發現要被AOP代理的Controller Bean已經在容器中存在, 配置AOP就無效了.

同樣這樣的情況也存在於數據庫事務中, 如果Service的Bean掃描配置在spring-mvc.xml中, 而數據庫事務管理器配置在application.xml中, 會導致數據庫事務失效, 原理一樣.

所以這裏 ,我們需要把AOP放置在Controller掃描配置的文件中(注意這裏這樣做是爲了攔截控制器層)


<aop:aspectj-autoproxy proxy-target-class="true"/><!-- 啓用AspectJ對Annotation的支持 -->

<bean id="userInterceptor" class="cn.org.sso.www.logs.UserLogs"></bean>切面類
    <context:component-scan base-package="cn.org.sso.www.controller" use-default-filters="true">
    </context:component-scan>



發佈了25 篇原創文章 · 獲贊 7 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章