如果有需要大家可以参考关于Spring AOP的文章 Spring AOP
切入点表达式
execution(modifiers-pattern? ret-type-pattern declaring-type-pattern?name-pattern(param-pattern) throws-pattern?)
- 官方解析:
除了返回类型模式(ret-type-pattern) 名称模式(name-pattern) 参数模式(param-pattren)之外其他参数是可选的,所以其他模式后面都带来一个问号,表示参数是可选的。
修饰模式(modifiers-pattern) 修饰切入点方法(public private protected)
返回类型模式(ret-type-pattern) 声明切入点方法返回类型
声明类型模式(declaring-type-pattern) 指定切入点所属的类
名称模式(name-pattern) 指定切入点方法名称 例子:execution(* set*(..)) 执行名称以set开头的任何方法
参数模式(param-pattern) 指定切入点参数类型 例子:execution(* set*(..)throws Exception) 执行以set开头且抛出Exception的方法
异常模式(throws-pattern) 指定切入点异常抛出类型
- 官方案例:
- 自定义案例
execetion(public * com.ncs.demo.Target.save*(..)throws Exception) 执行以public修饰 任何返回值 com.ncs.demo包下的Target类的以save开头的抛出Exception的方法
- 与逻辑运算符结合
同时Spring支持以下三个逻辑运算符来组合execution表达式
&&:要求连接点同时匹配两个切点表达式
||:要求连接点匹配至少一个切入点表达式
!:要求连接点不匹配指定的切入点表达式
例子: execution(* set*(..)) && execution(* get*(..)) 执行所有以set和get开头的任何方法