aop切点表达式
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 类型。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?