execution(modifiers-pattern? ret-type-pattern declaring-type-pattern? name-pattern(param-pattern)throws-pattern?)
其中,括号中的每个部分都表示一个限制条件,它们可以组合在一起,用于精确选定匹配的方法。具体参数说明如下:
- modifiers-pattern(可选):方法的修饰符,如 public、protected、private、static、final 等等。其中,* 表示任意修饰符,可以省略不写。
- ret-type-pattern:返回值类型模式,如 java.lang.String、java.util.* 等等。
- declaring-type-pattern(可选):类或接口的全路径名,如 java.lang.String、java.util.AbstractList 等等。其中,* 表示任何类或接口,可以省略不写。
- name-pattern:方法名,如 equals、hashCode、* 等等,* 表示匹配所有方法。
- param-pattern:方法的参数列表,如 (java.lang.String, int) 表示匹配一个带有一个 String 型和一个 int 型参数的方法。注:"(..)":匹配任意数量任意类型的参数,"()":匹配一个任意类型的参数,"(, String)":匹配两个参数,第一个任意类型,第二个是 String 类型,"(String, ..)":匹配至少一个参数,第一个参数是 String 类型。
- throws-pattern(可选):方法声明抛出的异常列表,如 java.lang.NullPointerException、java.lang.Exception 等等。
例如:
- execution(public * *(..)) 匹配所有 public 访问权限,任意返回类型,任意类或接口,方法名任意,任意参数的方法。
- execution(* com.example.demo..(..)) 匹配 com.example.demo 包下的所有方法。
- execution(* com.example.demo...(..)) 匹配 com.example.demo 包及其子包下的所有方法。
- execution(String com.example.demo.UserService.getName(String)) 匹配 UserService 类中名为 getName,参数为一个 String 类型的方法,且其返回值必须为 String 类型。
标签:匹配,String,..,pattern,切点,参数,aop,java,表达式
From: https://www.cnblogs.com/daxiong182/p/17383480.html