一、AOP 简介
AOP全称(Aspect Oriented Programming)意味:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护技术。
简单点说就是:AOP是用来维护的,它的底层是动态代理模式,在开发中如果想要增加一些功能(比如日志),可以使用AOP在不改变原来业务逻辑代码的同时实现功能的增加。
利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,也提高了程序的可重用性,同时提高了开发效率。
二、AOP 相关术语
- 横切关注点: 跨越应用程序多个模块的方法或功能,就是与业务逻辑无关的,但是需要关注的部分,比如日志之类的
- 切面(
Aspect): 横切关注点 被模块化 的特殊对象,就是一个类,也就是“增加的功能”的类 - 通知(
Advice): 切面必须要完成的工作,也就是说,它是切面中的一个方法 - 目标(
Target): 被通知的对象, - 代理(
Proxy): 向目标对象应用通知之后创建的对象,由Spring创建 - 切入点(
Point): 切面通知执行的“地点”,就是方法在哪里执行 - 连接到(
JointPoint): 与切入点匹配的执行点
看下图:
三、AOP 在 Spring 中的作用
在Spring AOP中,通过Advice定义横切逻辑,Spring支持5钟类型的Advice:
| 通知类型 | 连接点 | 实现接口 |
|---|---|---|
| 前置通知 | 方法前 | org.springframework.aop.MethodBeforeAdvice |
| 后置通知 | 方法后 | org.springframework.aop.MethodAfterRunningAdvice |
| 环绕通知 | 方法前后 | org.aopalliance.intercept.MethodInterceptor |
| 异常抛出通知 | 方法抛出异常 | org.springframework.aop.ThrowsAdvice |
| 引介通知 | 类中增加新的方法属性 | org.springframework.aop.IntroductionInterceptor |
版权声明:本文为lesileqin原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。