用法
April 3, 2023About 1 min
用法
execution(方法表达式)
execution(* cn.sunpiaoliang.service..*.*(..))
cn.sunpiaoliang.service 这个路径下的包或子包所有方法和所有类型的参数 返回值为任何类型
@Pointcut("execution(void com.itheima.dao.BookDao.update())")
注:
第一个 “*” 任何类型返回值
cn.sunpiaoliang.service 路径
.. :包或子包
第二个“*” 所有类
cn.*Service
任何 service 结尾的包任何方法
(..) 任意方法 (*)只有一个参数 ()不带参数
@annotation
匹配当前执行方法持有指定注解的方法,可以直接写注解,也可以直接写全路径
@within
匹配所以持有指定注解类型内的方法,全路径
aop 主要是通过代理实现
1、JDK 代理,实现接口的
2、CGlib 代理
通配符
表达式内可以使用通配符描述切入点,快速描述
*
:单个独立的任意符号,可以独立出现的,可以作为前缀或者后缀的匹配符出现(必有一个)execution(public * com.itheima.*.UserService.find*(*))
匹配 com.itheima 包下的任意包中的 UserService 类或接口中所有的 find 开头的带有一个参数的方法..
:多个连续的任意符号,可以独立出现,常用于简化包名与参数的书写(有或者没有都 ok)execution(public User com..UserService.findById(..))
匹配 com 包下的任意包中的 UserService 类或接口中所有名称为 findById 的方法+
:专用于匹配子类类型(表示子类)execution(**..*Service+.*(..))