Spring AOP 简述

来源:互联网 发布:js获取json长度 编辑:程序博客网 时间:2024/05/22 05:12

Spring AOP 主要用于实现业务和事务解耦。
例如用于实现性能监控,事务管理

实现原理:
Spring AOP 是使用动态代理在运行期间植入增强的功能代码。

JDK代理的局限:只能为接口创建代理实例。
CGLib采用字节码技术,可以为类创建一个子类,并在子类创建方法拦截父类所有的方法,并植入横切逻辑。

Spring AOP的底层是通过使用JDK动态代理或者CGLib动态代理为目标bean植入横切逻辑的。

AOP的一些基本术语

  • 连接点:程序执行的某个特定位置:如类初始化的前后,函数调用的前后,方法抛出异常的前后。Spring仅支持方法调用的前后的连接点。

  • 切点:定位连接点的条件(犹如SQL的查询条件)

  • 增强:是植入到目录类连接点上的一段程序
  • 目标对象(Target):增强逻辑需要植入的目录类
  • 引介(Introduction):是一种特殊的增强,可以为类添加属性和方法。
  • 植入(Weaving):是将增强添加到目录类中连接点的动作

- 代理(Proxy):帮助(代理)目标类完成增强功能的工具类

常用的增强有:
1. 前置增强:在目标类的方法执行之前嵌入增强逻辑,实现接口 MethodBeforeAdvice
2. 后置增强:在目标类的方法执行之后嵌入增强逻辑,实现接口 AfterReturningAdvice
3. 环绕增强: 在目标类的方法前后嵌入增强逻辑,实现接口 MethodInterceptor
4. 异常抛出增强:当抛出异常之前执行,常用于事务处理的回滚,实现接口ThrowsAdvice
5. 引入增强:
是一种比较特殊的增强类型,不是在目标方法周围植入增强,而是为目标类创建新的方法和属性,所以引入增强的连接点是类级别的,而非方法级别。
通过引入增强,我们可以为目标类添加一个接口的实现(即目标类可能为实现的接口),通过引入增强代理实现新的功能。继承 DelegatingIntroductionInterceptor

0 0
原创粉丝点击