簡單介紹下如何使用pointcut、advisor
@component
@aspect
public class logaspect
@after("getpointcutname(userdto)")
public void logbeforepointcut(joinpoint joinpoint, userdto userdto) throws throwable
@before("execution(* com.aop.service.userservice.adduserbefore(..)) && args(userdto)")
public void logbefore(joinpoint joinpoint, userdto userdto) throws throwable
@after("execution(* com.aop.service.userservice.adduserafter(..)) && args(userdto)")
public void logafter(joinpoint joinpoint, userdto userdto) throws throwable
@afterreturning(
pointcut = "execution(* com.aop.service.userservice.adduserafterreturning(..))",
returning = "userdto")
public void logafterreturning(joinpoint joinpoint, userdto userdto)
@around("execution(* com.aop.service.userservice.adduseraround(..)) && args(userdto)")
public void logaround(proceedingjoinpoint joinpoint, userdto userdto) throws throwable
@before("execution(* com.aop.service.userservice.adduserbeforevoid(..)) && args(userdto)")
public void logbeforevoid(joinpoint joinpoint, userdto userdto) throws throwable
}
public inte***ce userservice
advisor提供了before、after、around、afterreturning,具體用處的場景,我簡單羅列下
1.日誌=》追蹤問題
2.執行期間加強類的額外功能,注入攔截,鑑權...
額外這裡談下pointcut結合advice,兩者主要應用場景有類似之處,pointcut可能更應用在多個複雜條件,advice更為注重其方法行為,通過註解名字before、after等能夠一眼感覺出來,那麼兩者結合後,即把行為+多場景同時結合起來。
總結:spring提供aop後,基本上其它框架只要實現其體現,想做什麼就能夠為所欲為
AOP面向切面
spring框架 開門見山,此篇部落格將主要來講講這個spring框架的aop aop aspect oriented programming 即面向切面程式設計的技術 aop基於ioc基礎,是對oop的有益補充。首先,我們需要知道以下幾個概念 1.joinpoint連線點 指被攔截的點,在spri...
切面 aop 筆記
around註解用於修飾around增強處理,around增強處理是功能比較強大的增強處理,它近似於before增強處理和afterreturing增強處理的總結,around增強處理既可在執行目標方法之前增強動作,也可在執行目標方法之後織入增強的執行。與before增強處理 afterreturn...
AOP 切面程式設計
簡介 如果你很熟悉面向方面程式設計 aop 你就會知道給 增加 切面 可以使 更清晰並且具有可維護性。但是aop通常都依賴於第三方類庫或者硬編碼的.net特性來工作。雖然這些實現方式的好處大於它們的複雜程度,但是我仍然在尋找一種實現aop的更為簡單的方式,來試我的 更為清晰。我將它們單獨移出來,並命...