aop切点表达式

execution(modifiers-pattern? ret-type-pattern declaring-type-pattern? name-pattern(param-pattern)throws-pattern?)

 其中,括号中的每个部分都表示一个限制条件,它们可以组合在一起,用于精确选定匹配的方法。具体参数说明如下:

  1. modifiers-pattern(可选):方法的修饰符,如 public、protected、private、static、final 等等。其中,* 表示任意修饰符,可以省略不写。
  2. ret-type-pattern:返回值类型模式,如 java.lang.String、java.util.* 等等。
  3. declaring-type-pattern(可选):类或接口的全路径名,如 java.lang.String、java.util.AbstractList 等等。其中,* 表示任何类或接口,可以省略不写。包名和类名之间一个点,代表当前包下的类 两个点表示当前包及其子包下的类。
  4. name-pattern:方法名,如 equals、hashCode、* 等等,* 表示匹配所有方法。
  5. param-pattern:方法的参数列表,如 (java.lang.String, int) 表示匹配一个带有一个 String 型和一个 int 型参数的方法。注:"(..)":匹配任意数量任意类型的参数,"()":匹配一个任意类型的参数,"(, String)":匹配两个参数,第一个任意类型,第二个是 String 类型,"(String, ..)":匹配至少一个参数,第一个参数是 String 类型。
  6. 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 类型。
 
posted @   方方面  阅读(48)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示