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