Spring(5) -(14) pointcut 語法

weixin_34162695發表於2018-09-26

AOP的規範本應該由SUM公司提出,但是被AOP聯盟捷足先登.AOP聯盟指定AOP規範,首先就要解決一個問題,怎麼表示切入點,也就是在哪些方法上增強(where)

AspectJ 是一個面向切面的框架:

AspectJ切入點語法如下:(表示在哪些包下的哪些類的哪些方法做切入增強)

execution(modifiners-pattern?ret-type-pattern declaring-type-pattern? name-param(param-patterm)throws-pattern?)
?表示:該引數可以出現一次或零次
翻譯成中文:
execution(<修飾符>?<返回型別> <宣告型別>?<方法名>(<引數>)<異常>?)
舉例:public static Class java.lang.Class.forName(String className) throws ClassNotFoundException

萬用字元

*

匹配任何部分,只能表示一個單詞

..

可用於全限定名中和方法引數中,分別表示子包和0到N個引數

spring-core 文件中的例子

Some examples of common pointcut expressions are given below.
the execution of any public method:
execution(public * *(..))

the execution of any method with a name beginning with "set":
execution(* set*(..))

the execution of any method defined by the AccountService interface:
execution(* com.xyz.service.AccountService.*(..))//常用

the execution of any method defined in the service package:
execution(* com.xyz.service.*.*(..))//常用

the execution of any method defined in the service package or a sub-package:
execution(* com.xyz.service..*.*(..))//常用
  

相關文章