Spring 笔记(五)AOP

前言

横切关注点

使用 @AspectJ 定义切面。
同时还需要在配置类上应用 @EnableAspectJAutoProxy 注解,启用 AOP 自动代理。(不添加它的话,@AspectJ 注解的类只会被当作普通 Bean)

定义切点

使用 @Pointcut 定义切点,其参数为切点表达式,切点表达式由以下三大部分组成:

通配符

  1. *:匹配任意非空白字符
  2. ..:匹配任意数量的子包或者参数。
  3. +:匹配指定类及其子类。(感觉一般是用在表达式末尾)

运算符

与或非

指示器 (designators)

重点是 exectution,其他的可以用的时候再查

添加通知 (Advice)

环绕通知的 ProceedingJoinPoint 参数

环绕通知方法必须有一个 ProceedingJoinPoint 参数,并且要在前置通知完成后,调用该对象的 proceed() 方法,该方法会将控制权返回给切点方法。切点方法执行完毕后,会继续执行 proceed() 方法后的代码。
proceed() 方法就相当于前置通知和后置通知的分界点。

环绕通知的代码,通常都会写在一个 try-catch 块里,如果运行抛出异常,catch 块的内容即相当于 AfterThrowing 通知。

处理通知中的参数

从命令切点到通知方法的参数转移:args 指示器

参考

猜你喜欢

转载自www.cnblogs.com/kirito-c/p/9202178.html