本文介紹了在帶有Spring的@Controler方法上使用@BebeFor方面不起作用的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!
問題描述
我有一個使用Spring3的Web應用程序,其中控制器使用@Controller進行注釋。控制器的公共方法使用@RequestMap進行注釋。這完全可以正常工作。
現在我想在調用控制器中的任何公共方法之前進行檢查。我已經使用PointCut表達式創建了一個@Being方面,該表達式選擇用@RequestMap注釋的所有控制器方法。我已經使用
注冊了方面
<aop:aspectj-autoproxy>
<aop:include name="myAspect"/>
</aop:aspectj-autoproxy>
問題是,當我啟動應用程序并請求某個控制器處理的某個URL時,我收到以下錯誤消息:
“處理程序XXX沒有適配器:您的處理程序是否實現了類似于控制器的受支持接口?”
這樣控制器就不再工作了。有誰有辦法解決這個問題嗎?
推薦答案
肖恩·帕特里克·弗洛伊德是對的。還有一種方法:從Spring Proxy AOP切換到CGILib。
來自Spring引用:
可以強制使用
CGLIB,在這些(希望是罕見的)情況下
您需要建議一種方法,
未在接口上聲明,或者
其中您需要傳遞一個代理
對象綁定到作為具體類型的方法。
http://static.springsource.org/spring/docs/3.0.x/reference/aop.html#aop-autoproxy-force-CGLIB
強制使用CGLIB代理集
代理目標類的值
[2-0]>
元素設置為True:<aop:config
proxy-target-class="true">要在使用@AspectJ自動代理支持時強制CGLIB代理,請設置
的”Proxy-Target-Class”屬性
<aop:aspectj-autoproxy>
元素
設置為True:<aop:aspectj-autoproxy
proxy-target-class="true"/>
btw:我建議使用AspectJ或Spring代理CGILib AOP。/
這篇關于在帶有Spring的@Controler方法上使用@BebeFor方面不起作用的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,