1. 程式人生 > >spring AOP切入點表示式規則

spring AOP切入點表示式規則

任意公共方法的執行: 
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..*) 
實現了 AccountService 介面的代理物件的任意連線點(在Spring AOP中只是方法執行) : 
this(com.xyz.service.AccountService) 
'this'在binding form中用的更多:- 請常見以下討論通知的章節中關於如何使得代理物件可以在通知體內訪問到的部分。 
實現了 AccountService 介面的目標物件的任意連線點(在Spring AOP中只是方法執行) : 

target(com.xyz.service.AccountService) 
'target'在binding form中用的更多:- 請常見以下討論通知的章節中關於如何使得目標物件可以在通知體內訪問到的部分。 
任何一個只接受一個引數,且在執行時傳入的引數實現了 Serializable 介面的連線點 (在Spring AOP中只是方法執行) 
args(java.io.Serializable) 
'args'在binding form中用的更多:- 請常見以下討論通知的章節中關於如何使得方法引數可以在通知體內訪問到的部分。 請注意在例子中給出的切入點不同於 execution(* *(java.io.Serializable)): args只有在動態執行時候傳入引數是可序列化的(Serializable)才匹配,而execution 在傳入引數的簽名宣告的型別實現了 Serializable 介面時候匹配。 

有一個 @Transactional 註解的目標物件中的任意連線點(在Spring AOP中只是方法執行) 
@target(org.springframework.transaction.annotation.Transactional) 
'@target' 也可以在binding form中使用:請常見以下討論通知的章節中關於如何使得annotation物件可以在通知體內訪問到的部分。 
任何一個目標物件宣告的型別有一個 @Transactional 註解的連線點(在Spring AOP中只是方法執行) 
@within(org.springframework.transaction.annotation.Transactional) 
'@within'也可以在binding form中使用:- 請常見以下討論通知的章節中關於如何使得annotation物件可以在通知體內訪問到的部分。 
任何一個執行的方法有一個 @Transactional annotation的連線點(在Spring AOP中只是方法執行) 
@annotation(org.springframework.transaction.annotation.Transactional) 
'@annotation' 也可以在binding form中使用:- 請常見以下討論通知的章節中關於如何使得annotation物件可以在通知體內訪問到的部分。 
任何一個接受一個引數,並且傳入的引數在執行時的型別實現了 @Classified annotation的連線點(在Spring AOP中只是方法執行) 
@args(com.xyz.security.Classified)