AOP基本概念:
AOP,面向切面编程,是一种概念,是一种思想,其实现者有很多,Spring就是其一。
AOP,是ooP的一种补充,OOP是从静态角度考虑程序的结构,而AOP是动态角度考虑程序的运行过程。
Spring就是降低耦合度的,其中ioC用于降低业务逻辑之间的耦合度,AOP用于降低逻辑与系统级服务(交叉业务逻辑)间的耦合度,将系统级服务在运行时织入到主业务逻辑中。
Spring的AOP的底层工作原理是使用动态代理对主业务进行增强,而动态代理使用的是JDK的Proxy与CGLB两种动态代理。
AOP的相关概念:
切面(Aspect):对于AOP来说切面就是交叉业务逻辑,就是要对主业务进行增强的部分,AOP编程中常见的切面有两种:通知和顾问。
织入(Weaving):将切面切入到主业务逻辑中的过程。
连接点(JoinPoint):可以织入切面的目标类的目标方法。
切入点(Pointcut):真正织入切面的目标类的目标方法。也就是切入点一定是连接点,但连接点不一定是切入点。
目标对象:用于被增强的对象,目标类的对象就是目标对象,而在AOP中,主业务逻辑所在的类的对象就是目标对象。
通知(Advice):是一种切面,可以完成解的织入功能。例如。可以指定织入的时间点。通知可以通知可以指定的织入的时间点,而切入点指定的是位置。
顾问(Advisor):是另一种切面,可以完成更复杂的织入功能,其包装了通知。
引入(Introduction):也是一种切面,用于完成在不修改目标类的前提下,为目标对象增强新的功能。