SpringAop切点表达式
1.1 SpringAop切点表达式
execution([访问修饰符]返回值类型 包名.类名.方法名(参数))
execution(public void com.zhan.aop.Target.method())
- 访问修饰符可以省略
- execution(void com.zhan.aop.Target.*())
- 返回值类型、包名、类名、方法名可以用 * 代表任意
- execution(* com.zhan.aop.*.*(..))
- 包名与类名之间有个.代表当前包下的类,两个点..表示当前包及子包下的类
- execution(* com.zhan.aop..*.*(..))
- 参数列表可以使用两个点..表示任意个数,任意类型的参数列表
- execution(* *..*.*(..))
1.2 XML配置AOP详解
<aop:通知类型 method="切面类中方法名" pointcut="切点表达式"></aop:通知类型>
名称 | 标签 | 说明 |
前置通知 | <aop:before> | 用于配置前置通知,指定增强的方法在切入点方法之前执行。 |
后置通知 | <aop:after-returning> | 用于配置后置通知,指定增强的方法在切入点方法之后执行。 |
环绕通知 | <aop:around> | 用于配置环绕通知,指定增强的方法在切入点方法之前和之后都执行。 |
异常抛出通知 | <aop:after-throwing> | 用于配置异常抛出通知,指定增强的方法在出现异常时执行。 |
最终通知 | <aop:after> | 用于配置最终通知,无论增强方式执行是否有异常都会执行。 |
注意:当使用@Around处理时,我们需要将第一个参数定义为ProceedingJoinPoint类型,该类是JoinPoint的子类。
1.3 切点表达式的抽取
当多个增强的切点表达式相同时,可以将切点表达式进行抽取,在增强中使用pointcut-ref属性代替pointcut属性来引用抽取的切点表达式。
Nice to see you all!