我需要讓這個 aop 方面作業,但我總是收到錯誤 404,我需要知道這個點是否在控制器正確之后。知道這些點是如何作業的,以訪問控制器。
如果可以解釋這些點是如何作業的。
<aop:aspect ref="permissionInterceptor">
<aop:around method="invoke"
pointcut="execution(* com.teste1.teste2.web.controller..*())
and @annotation(com.teste1.ae.client.security.Permission)" />
</aop:aspect>
img 懷疑
uj5u.com熱心網友回復:
execution(* com.teste1.teste2.web.controller..*())
將意味著 -com.teste1.teste2.web.controller包或其子包之一中定義的任何方法的執行
..是一個特殊的通配符,這意味著任何數量的引數都將匹配。在執行切入點的背景關系中,它將是當前包或其任何子包。
Spring 檔案參考:示例
而 (..) 匹配任意數量(零個或多個)的引數。
with 的表達..會起作用。您可以驗證and @annotation(com.teste1.ae.client.security.Permission)從運算式中洗掉部件時控制器方法是否得到建議。如果請求仍然導致 404 ,請分享MCVE或 Aspect 代碼以進一步了解邏輯。
uj5u.com熱心網友回復:
面向切面編程 (AOP) 通過提供另一種思考程式結構的方式來補充面向物件編程 (OOP)。OOP 中模塊化的關鍵單位是類,而 AOP 中模塊化的單位是方面。方面可以實作關注點的模塊化,例如跨越多種型別和物件的事務管理。(這種關注點在 AOP 文獻中通常被稱為橫切關注點。)
在這樣一個方面定義的切入點可以在任何需要切入點運算式的地方參考。例如,要使服務層具有事務性,您可以撰寫:
<aop:config>
<aop:advisor
pointcut="com.xyz.someapp.SystemArchitecture.businessService()"
advice-ref="tx-advice"/>
</aop:config>
<tx:advice id="tx-advice">
<tx:attributes>
<tx:method name="*" propagation="REQUIRED"/>
</tx:attributes>
</tx:advice>
我們可以這樣宣告一個方面:
<aop:config>
<aop:pointcut id="businessService"
expression="execution(* com.xyz.myapp.service.*.*(..))"/>
</aop:config>
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/339465.html
