AOP 简介
AOP(Aspect Orient Programming),面向切面编程,是面向对象编程 OOP 的一种补充。面向对象编程是从静态角度考虑程序的结构,而面向切面编程是从动态角度考虑程序运行过程。AOP 底层采用两种动态代理模式实现: JDK 的动态代理与 CGLIB 的动态代理。
AOP 编程术语
1. 切面
切面(Aspect)泛指交叉业务逻辑。上例中的事务处理、日志处理就可以理解为切面。常用的切面有通知与顾问。实际就是对主业务逻辑的一种增强。
2. 织入
织入(Weaving)是指将切面代码插入到目标对象的过程。
3. 连接点
连接点(JoinPoint)指可以被切面织入的方法。通常业务接口中的方法均为连接点。
4. 切入点
切入点(Pointcut)指切面具体织入的方法。注意,被标记为 final 的方法是不能作为连接点与切入点的。因为最终的是不能被修改的,不能被增强的。
5. 目标对象
目标对象(Target)指将要被增强的对象,即包含主业务逻辑的类的对象 。
6. 通知
通知(Advice)是切面的一种实现,可以完成简单织入功能(织入功能就是在这里完成的)。换个角度来说, 通知定义了增强代码切入到目标代码的时间点,是目标方法执行之前执行,还是之后执行等。通知类型不同,切入时间不同(切入点定义切入的位置,通知定义切入的时间)。
7. 顾问
顾问(Advisor)是切面的另一种实现,能够将通知以更为复杂的方式织入到目标对象中,是将通知包装为更复杂切面的装配器。