一 切入点表达式
在使用spring框架配置AOP的时候,不管是通过XML配置文件还是注解的方式都需要定义pointcut切入点,切入点表达式被用来指定那些方法需要被增强。
execution()是最常用的切点函数,其语法如下所示:
execution([修饰符] 返回值类型 包名.类名.方法名(参数列表))
二 详细用法
1 全匹配写法
[XML] 纯文本查看 复制代码 execution( public void com.itheima.service.impl.UserServiceImpl.saveCustomer(..) )
2 默认 public 可以省略
[XML] 纯文本查看 复制代码 execution( void com.itheima.service.impl.UserServiceImpl.saveCustomer(..) )
3 匹配任何返回值
[XML] 纯文本查看 复制代码 execution( * com.itheima.service.impl.UserServiceImpl.saveCustomer(..) )
4 参数列表可以使用 * , 表示可以是任何的数据类型,但必须有参数
[XML] 纯文本查看 复制代码 execution( * com.itheima.service.impl.UserServiceImpl.saveCustomer( * ) )
5 参数列表可以使用 .. 表示有无参数均可,有参数可以是任意类型
[XML] 纯文本查看 复制代码 execution( * com.itheima.service.impl.UserServiceImpl.saveCustomer( .. ) )
6 包名可以使用*,表示任意包,但是有几级包,需要写几个
[XML] 纯文本查看 复制代码 execution( * *.*.*.*.UserServiceImpl.saveCustomer( .. ) )
7 使用..来表示当前包,及其子包
[XML] 纯文本查看 复制代码 execution( * com..UserServiceImpl.saveCustomer( .. ) )
8 类名可以使用*号,表示任意类
[XML] 纯文本查看 复制代码 execution( * com..*.saveCustomer( .. ) )
9 类名也可以使用 * 加后缀,表示这个后缀的所有类
[XML] 纯文本查看 复制代码 execution( * com..*ServiceImpl.saveCustomer( .. ) )
10 方法名可以使用*号,表示任意方法
[XML] 纯文本查看 复制代码 execution( * com..*.* ( .. ) )
11 全通配方式
[XML] 纯文本查看 复制代码 execution( * *..*.* ( .. ) )
12 实际开发中常用写法
[XML] 纯文本查看 复制代码 * com.itheima.service.impl.*.*(..)
|
|