任意公共方法的執行:
execution(public * *(..))
任何一個名字以“set”開始的方法的執行:
execution(* set*(..))
AccountService介面定義的任意方法的執行:
execution(* com.xyz.service.AccountService.*(..))
在service包中定義的任意方法的執行:
execution(* com.xyz.service.*.*(..))
在service包或其子包中定義的任意方法的執行:
execution(* com.xyz.service..*.*(..))
在service包中的任意連線點(在Spring AOP中只是方法執行):
within(com.xyz.service.*)
在service包或其子包中的任意連線點(在Spring AOP中只是方法執行):
within(com.xyz.service..*)
在service包或其子包中的任意連線點(在Spring AOP中只是方法執行):within(com.xyz.service..*)
實現了AccountService介面的代理物件的任意連線點 (在Spring AOP中只是方法執行):
this(com.xyz.service.AccountService)
'this'在繫結表單中更加常用:- 請參見後面的通知一節中瞭解如何使得代理物件在通知體內可用。實現AccountService介面的目標物件的任意連線點 (在Spring AOP中只是方法執行):
target(com.xyz.service.AccountService)
'target'在繫結表單中更加常用:- 請參見後面的通知一節中瞭解如何使得目標物件在通知體內可用。任何一個只接受一個引數,並且執行時所傳入的引數是Serializable 介面的連線點(在Spring AOP中只是方法執行)
args(java.io.Serializable)
'args'在繫結表單中更加常用:- 請參見後面的通知一節中瞭解如何使得方法引數在通知體內可用。請注意在例子中給出的切入點不同於
execution(* *(java.io.Serializable)):
args版本只有在動態執行時候傳入引數是Serializable時才匹配,而execution版本在方法簽名中宣告只有一個 Serializable型別的引數時候匹配。目標物件中有一個 @Transactional 註解的任意連線點 (在Spring AOP中只是方法執行)
@target(org.springframework.transaction.annotation.Transactional)
'@target'在繫結表單中更加常用:- 請參見後面的通知一節中瞭解如何使得註解物件在通知體內可用。任何一個目標物件宣告的型別有一個 @Transactional 註解的連線點 (在Spring AOP中只是方法執行):
@within(org.springframework.transaction.annotation.Transactional)
'@within'在繫結表單中更加常用:- 請參見後面的通知一節中瞭解如何使得註解物件在通知體內可用。任何一個執行的方法有一個 @Transactional 註解的連線點 (在Spring AOP中只是方法執行)
@annotation(org.springframework.transaction.annotation.Transactional)
'@annotation'在繫結表單中更加常用:- 請參見後面的通知一節中瞭解如何使得註解物件在通知體內可用。任何一個只接受一個引數,並且執行時所傳入的引數型別具有@Classified 註解的連線點(在Spring AOP中只是方法執行)
@args(com.xyz.security.Classified)
'@args'在繫結表單中更加常用:- 請參見後面的通知一節中瞭解如何使得註解物件在通知體內可用。任何一個在名為'tradeService'的Spring bean之上的連線點 (在Spring AOP中只是方法執行):
bean(tradeService)
任何一個在名字匹配萬用字元表示式'*Service'的Spring bean之上的連線點 (在Spring AOP中只是方法執行):
bean(*Service)