切入点表达式说明
aop:pointcut配置切入点表达式
<aop:pointcut expression="execution(public void com.service.impl.CustomerServiceImpl.saveCustomer())" id="pt1"/>
- execution:
- 是匹配方法的执行(常用)
- execution(表达式)
表达式语法:
execution([修饰符] 返回值类型 包名.类名.方法名(参数))
execution( public void com.service.UserServiceImpl.saveCustomer(Customer customer) )
对表达式进行优化
- 全匹配写法
execution( public void com.service.UserServiceImpl.saveCustomer(Customer customer) )
- 默认
public
可以省略
execution( void com.service.UserServiceImpl.saveCustomer(Customer customer) )
- 匹配任何返回值
execution( * com.service.UserServiceImpl.saveCustomer(Customer customer) )
- 参数列表可以使用
*
, 表示可以是任何的数据类型,但必须有参数
execution( * com.service.UserServiceImpl.saveCustomer( * ) )
- 参数列表可以使用
..
表示有无参数均可,有参数可以是任意类型
execution( * com.service.UserServiceImpl.saveCustomer( .. ) )
- 包名可以使用号,表示任意包,但是有几级包,需要写几个
execution( * *.*.UserServiceImpl.saveCustomer( .. ) )
- 使用..来表示当前包,及其子包
execution( * com..UserServiceImpl.saveCustomer( .. ) )
- 类名可以使用*号,表示任意类
execution( * com..*.saveCustomer( .. ) )
- 类名也可以使用
*
加后缀,表示这个后缀的所有类
execution( * com..*ServiceImpl.saveCustomer( .. ) )
- 方法名可以使用
*
号,表示任意方法
execution( * com..*.* ( .. ) )
- 全通配方式
execution( * *..*.* ( .. ) )
建议写法
execution( * com..UserServiceImpl.*( .. ))
execution( * com..*ServiceImpl.*( .. ))