Spring AOP介绍
AOP
AOP(Aspect Oriented Programming)是OOP的延续,称为面向切面编程。AOP是Spring的核心之一
AOP概念
代理目标 ( target ):谁将被其它对象代理,谁就是代理目标。
代理对象 ( proxy ):谁将代理其它对象,谁就是代理对象。
连接点 ( Join Point ):连接点 = 执行点 + 方位
- 执行点:任意一个类中的可以执行的方法都可以看作是一个执行点
- 方位:
方法执行前 ( before )
方法执行前和后 ( around )
方法抛出异常后 ( after-throw )
方法正常返回后 ( after-return )
方法执行后 ( after )
切点 ( Pointcut ):对 连接点 进行筛选的条件(类似于SQL中的where条件)
Advice:在指定的 切点 所选择 的 连接点 加入的代码 就是 Advice(Advice就是在目标位置加入的代码)
切面( Aspect ):切点( Pointcut ) + Advice 就是 切面( Aspect )
织入( weaving ):将 Advice 添加到 切点 选中的 连接点 的过程
织入方式:
(1)编译时织入:当一个类文件被编译时进行织入,这需要特殊的编译器才可以做的到。
(2)类加载时织入:使用特殊的类加载器。
(3)运行时织入:在运行期为目标类添加增强生成子类的方式
Spring采用动态代理织入,而AspectJ采用编译时织入和类加载时织入。
引入( introduction ):引入就是在一个接口的基础上引入新的接口增强其功能。