在Controller中使用AOP
轉(zhuǎn):http://usherlight.iteye.com/blog/1306111
?
在Controller中使用AOP的問題主要在于如何讓Controller能夠被檢測到。?
Controller和其他Spring bean的區(qū)別在于:Controller是由mvc定義并在web.xml中的dispatcher中定義的。?
解決方法:?
1、正確定義Controller,(比較通用的做法,沒有特殊情況的話,大部分應(yīng)用沒有這個問題)?
??? a. 將服務(wù)層的類都放在ApplicationCotext-*.xml中定義,在context listener中初始化(注意,任何Controller都不應(yīng)該在這里出現(xiàn)),要包括<aop:aspectj-autoproxy/>, 在這里,有沒有proxy-target-class="true" 沒有關(guān)系(具體含義參看下文)?
??? b. 定義mvc的配置文件,一般是 <<servlet name>>-servlet.xml,一般(也是推薦做法)使用auto scan來定義所有的Controller.關(guān)鍵步驟來了:這個文件也要加入<aop:aspectj-autoproxy proxy-target-class="true"/>, 一定要添加proxy-target-class="true"! 這是用于通知Spring使用cglib而不是jdk的來生成代理方法。?
??? c. 另外一個事項,Controller需要使用@Controller注釋,而不是繼承abstract Controller。?
??? d. 建議使用aspectj來完成aop?
轉(zhuǎn)載于:https://www.cnblogs.com/fengzhentian/p/4601920.html
總結(jié)
以上是生活随笔為你收集整理的在Controller中使用AOP的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Confluence 6 为空白空间编辑
- 下一篇: java安装jdk错误1316 指定的账