SpringMVC中對Controller使用AOP


轉自http://usherlight.iteye.com/blog/1306111

正確配置spring aop,在controller中使用AOP

在controller中使用AOP的問題主要在於如何讓controller能夠被檢測到。 
controller和其他spring bean的區別在於:controller是由mvc定義並在web.xml中的dispatcher中定義的。 

解決方法: 
1、正確定義controller,(比較通用的做法,沒有特殊情況的話,大部分應用沒有這個問題) 
    a. 將服務層的類都放在ApplicationCotext-*.xml中定義,在context listener中初始化(注意,任何controller都不應該在這里出現),要包括<aop:aspectj-autoproxy/>, 在這里,有沒有proxy-target-class="true" 沒有關系(具體含義參看下文) 
    b. 定義mvc的配置文件,一般是 <<servlet name>>-servlet.xml,一般(也是推薦做法)使用auto scan來定義所有的controller.關鍵步驟來了:這個文件也要加入<aop:aspectj-autoproxy proxy-target-class="true"/>, 一定要添加proxy-target-class="true"! 這是用於通知spring使用cglib而不是jdk的來生成代理方法。 
    c. 另外一個事項,controller需要使用@controller注釋,而不是繼承abstract controller。 
    d. 建議使用aspectj來完成aop 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM