一、面向切面 Spring AOP
1. 常用概念
面向切面:把应用中与业务逻辑无关的功能分离出来,而这些无关的功能被称为横切关注点
横切关注点(cross-cutting concerns):可以看成是影响应用多处的功能
通知(advice):通知定义了切面是什么以及何时使用
连接点(Joinpoint):切面需要作用的地方
切点(Pointcut):切点定义了切面作用在何处,是连接点所在的一个范围
切面(Aspect):横切关注点所形成的特殊的类,通知和切点共同定义了切面的全部内容,“是什么,在何时何处使用”
2. AOP 配置
3. 示例
3.1 改进:
如果想让定义的切点被其它切面所引用,可以把 <aop:point-cut> 写在 <aop:config> 元素的作用域里
3.2 声明环绕通知:
环绕通知对应的方法中,需要传入 ProceedingJoinPoint 参数,通过调用 proceed() 方法来执行被环绕的方法,在 proceed() 方法的前面,后面分别定义要执行的逻辑
3.3 为通知传递参数
3.4 通过切面引入新功能
type-matching:指定被通知的 bean;implement-interface:这些 bean 需要实现的接口;default-impl:定义实现此接口的方法。前面的 AOP 是为 bean 中的方法添加新的功能,而这里是为 bean 添加新的方法/功能
4. 切面的注解
... ...
二、AspectJ