AOP的切面思考

2021-09-02 12:27:33 字數 1559 閱讀 4223

簡單介紹下如何使用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的更為簡單的方式,來試我的 更為清晰。我將它們單獨移出來,並命...