Spring AOP是一种约定流程的编程,是一种基于方法的AOP,只能应用与方法之上, 动态代理技术帮助我们把定义的切面和服务方法织入约定的流程中
1. @AspectJ 注解
@Transactional 表明该方法需要事务运行
连接点 join point:对应的是具体被拦截的对象,因为 Spring 只能支持方法 , 所以被拦截的对象往往就是指特定的方法 切点 cut point:有时候,我们 的切面不单单应用于单个方法,也可能是多个类的不同方法,这时,可以通过正则式和指示器的规则去定义,从而适配连接点 通知 advice 前置通知,后置通知,环绕通知,事后返回通知和异常通知 目标对象 target 对象,其中包含连接点 引入 introducation 添加新的切点和目标对象 织入 weaving 代理 切面 aspect 管理切点和织入
@Aspect 切面,申明切面实现处理 @Before 里面需要申明具体切点 @After @AfterReturning @AfterThrowing
@PointCut 切点 用于描述那些类的那些方法需要启用AOP编程,为上面的 通知服务
@DeclareParent 引入新的类来增强服务, value 增强功能的目标对象 defaultImpl 引入增强功能的类
代理技术:JDK和CGLIB AOP类拥有接口,使用JDK,否则使用CGLIB 代理
2. 多切面 @order 通过注解指定切片执行顺序 @ordered 通过接口 指定切片顺序,需要实现接口函数 getOrder()