AOP术语:
1.通知(Advice):织入到目标类连接点上的一段程序代码
2.连接点(JoinPoint):程序执行的某个特定位置
3.切入点(Pointcut):筛选连接点
4.切面(Aspect):封装切入点和通知的模块
5.引入(introduction):向现有的类添加新方法属性
6.目标(target):要被通知的对象
7.代理(proxy):用于执行AOP的对象
8.织入(weaving):把切面应用到目标对象来创建新的代理对象的过程
一、基于代理的AOP实现
常用Advice接口
通知类型 | 接口 | 描述 |
---|---|---|
环绕通知 | org.aopalliance.intercept.MethodInterceptor | 拦截目标方法调用(invocation.proceed()调用目标方法) |
前置通知 | org.springframework.aop.MethodBeforeAdvice | 目标方法调用前调用 |
后置通知 | org.springframework.aop.AfterReturningAdvice | 目标方法调用后调用 |
异常通知 | org.springframework.aop.ThrowsAdvice | 目标方法抛出异常时调用 |
二、纯POJO
xml配置
三、AspectJ注解(Spring集成AspectJ实现AOP)
@Aspect 把当前类标识为一个切面供容器读取
@Pointcut 切入点声明,即切入到哪些目标类的目标方法。
@Before 前置通知
@After 后置通知
@AfterReturning 返回通知
@Around 环绕通知
@AfterThrowing 异常通知
@EnableAspectJAutoProxy 注册AutoProxyCreator(自动代理工厂)