實現Spring AOP 切面

2021-10-09 02:02:20 字數 1880 閱讀 7598

@aspect

@component

public class fallbackv1aop

@pointcut("@annotation(com.cloud.user.aop.fallbackv1)")

public void pointcut()

規則表示式示例:

任意公共方法的執行:

execution(public * *(..))

任何乙個以「set」開始的方法的執行:

execution(* set*(..))

accountservice 介面的任意方法的執行:

execution(* com.xyz.service.accountservice.*(..))

定義在service包裡的任意方法的執行:

execution(* com.xyz.service.*.*(..))

定義在service包和所有子包裡的任意類的任意方法的執行:

execution(* com.xyz.service..*.*(..))

定義在pointcutexp包和所有子包裡的joinpointobjp2類的任意方法的執行:

execution(* com.test.spring.aop.pointcutexp..joinpointobjp2.*(..))")

***> 最靠近(..)的為方法名,靠近.*(..))的為類名或者介面名,如上例的joinpointobjp2.*(..))

pointcutexp包裡的任意類.

within(com.test.spring.aop.pointcutexp.*)

pointcutexp包和所有子包裡的任意類.

within(com.test.spring.aop.pointcutexp..*)

實現了intf介面的所有類,如果intf不是介面,限定intf單個類.

this(com.test.spring.aop.pointcutexp.intf)

***> 當乙個實現了介面的類被aop的時候,用getbean方法必須cast為介面型別,不能為該類的型別.

帶有@transactional標註的所有類的任意方法.

@within(org.springframework.transaction.annotation.transactional)

@target(org.springframework.transaction.annotation.transactional)

帶有@transactional標註的任意方法.

@annotation(org.springframework.transaction.annotation.transactional)

***> @within和@target針對類的註解,@annotation是針對方法的註解

引數帶有@transactional標註的方法.

@args(org.springframework.transaction.annotation.transactional)

引數為string型別(執行是決定)的方法.

使用@before在切入點開始處切入內容

使用@after在切入點結尾處切入內容

使用@afterreturning在切入點return內容之後切入內容(可以用來對處理返回值做一些加工處理)

使用@around在切入點前後切入內容,並自己控制何時執行切入點自身的內容

使用@afterthrowing用來處理當切入內容部分丟擲異常之後的處理邏輯

注:處理順序如下

try  finally 

doafterreturning();//對應@afterreturning註解的方法切面邏輯

} catch (exception e)

springAOP註解式切面實現

org.springframework spring aop 4.3.11.release org.springframework spring aspects 4.3.11.release 我這裡監聽的是service層 component aspect public class testaspe...

SpringAop切面實現日誌記錄

springaop切面實現日誌記錄 實現 原因 spring在處理中,可能是因為我的專案有事務,serviceimpl的方法被 後直接得不到了。換乙個思路 先得到自己的父類,然後通過父類得到真實的自己 解決方法 1 2 這個方法幫忙拿出註解中的operation屬性 3 因為有攔截serviceim...

spring AOP 多個切面

切面 日誌 author w7 public class logger 切面 安全框架 author w7 public class security 切面 許可權 author w7 public class privilege public void setaccess string acces...