1、连接点(Joinpoint) 具有某些特定性质的程序在执行过程中的位置,比如:类开始初始化前、类初始化后、类中方法执行前/后,类中方法抛出异常时等等。在Spring中,通俗的讲就是类中的方法执行前、方法执行后、方法抛出异常时以及方法调用前后的这些程序执行点织入增强。因为Spring仅支持方法作为连接点。 连接点如何确定?具有哪两个性质? 性质:执行点 方位 1、方法表示的程序执行点; 2、用相对位置表示的方位; ex:在Test.foo()方法执行前的链接点,执行点是Test.foo(),方位是该方法执行前的位置。 Spring如何对执行点进行定位?如何定义方位? 1、Spring通过使用切点对执行点进行定位。 2、在增强类型中定义方位。 2、切点(Pointcut) 用数据库查询来说 切点是查询条件,记录就是连接点(确切的说应该是执行点,也就是方法,因为要想定位连接点还需要方位信息)。每个类中有多个方法,也就是可以有多个连接点。Spring通过切点来定位连接点,在Spring中,切点通过org.springframework.aop.Pointcut接口,以类和方法作为连接点的查询条件。 3、增强(Advice) 作用:1、织入目标类连接点上的一段程序代码。2、拥有与连接点有关的信息即 执行点的方位。 通过结合执行点的方位信息和切点信息就可以找到特定的链接。Spring所提供的增强接口都是带方位名的,如 BeforeAdvice、AfterReturningAdvice、ThrowsAdvice等。BeforeAdvice表示方法调用之前的位置。AfterReturningAdvice表示访问返回后的位置。、 结合切点和增强,才能确定特定的连接点并实施增强逻辑。 4、目标对象(Target) 增强逻辑的织入目标类。 5、引介(Introduction) 一类特殊的增强,能够为类添加一些属性和方法。例如一个业务类没有实现某接口,通过AOP的引介功能就能够动态的为该类添加接口的实现逻辑,让业务类成为该接口的实现类。 6、织入(weaving) 织入是将增强添加到目标类的具体连接点的上的过程。AOP就像一台织布机,将目标类,增强或者介入天衣无缝的编织到一起。根据不同的实现技术:有3种织入方法: 1、编译期织入,这要求使用特殊的Java编译器。 2、类装载期织入,这要求使用特殊的类装载器。 3、动态代理织入,在运行期为目标类添加增强生成子类的方式。 Spring采用的是动态代理织入,AspectJ采用编译期织入和类装载器织入。 7、代理(Proxy) 一个类被AOP织入增强之后,就产生了一个结果类,它是融合了原类和增强逻辑的代理类,根据不同的代理方式,代理类可能是和原类具有相同接口的类,也可能就是原类的子类。所以可以采用与调用原类相同的方式调用代理类。 8、切面(Aspect) 切面的组成:由切点和增强(介入)组成。包含横切逻辑的定义,也包含者连接点的定义,Spring AOP就是负责实施切面的框架,将切面所定义的横切逻辑织入切面所指定的连接点中。 AOP的工作重心:如何将增强应用于目标对象的连接点上? 1、通过切点和增强定位到连接点上。 2、在增强中编写切面的代码。