@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 finallydoafterreturning();//對應@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...