Skip to main content

用法

David LiuAbout 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 代理

通配符

表达式内可以使用通配符描述切入点,快速描述

  1. *:单个独立的任意符号,可以独立出现的,可以作为前缀或者后缀的匹配符出现(必有一个)

    execution(public * com.itheima.*.UserService.find*(*))
    匹配 com.itheima 包下的任意包中的 UserService 类或接口中所有的 find 开头的带有一个参数的方法

  2. .. :多个连续的任意符号,可以独立出现,常用于简化包名与参数的书写(有或者没有都 ok)

    execution(public User com..UserService.findById(..))
    匹配 com 包下的任意包中的 UserService 类或接口中所有名称为 findById 的方法

  3. +:专用于匹配子类类型(表示子类)

    execution(**..*Service+.*(..))

img