AOP 的九点核心概念和作用
AOP 为 Aspect Oriented Programming 的缩写,意为:面向切面编程,通过预编译方式和运行期间动态代理实现程序功能的统一维护的一种技术。AOP 是 OOP 的延续,是软件开发中的一个热点,也是 Spring 框架中的一个重要内容,是函数式编程的一种衍生范型。利用 AOP 可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。
AOP 的作用:
面向切面编程(AOP)提供另外一种角度来思考程序结构,通过这种方式弥补了面向对象编程(OOP)的不足。
利用 AOP 对业务逻辑的各个部分进行隔离,降低业务逻辑的耦合性,提高程序的可重用型和开发效率。
主要用于对同一对象层次的公用行为建模
1. 横切关注点
对哪些方法进行拦截,拦截后怎么处理,这些关注点称之为横切关注点;
2. Aspect(切面)
通常是一个类,里面可以定义切入点和通知。
3. JoinPoint(连接点)
程序执行过程中明确的点,一般是方法的调用,被拦截到的点。因为 Spring 只支持方法类型的连接点,所以在 Spring 中连接点指的就是被拦截到的方法,实际上连接点还可以是字段或者构造器。
4. Advice(通知)
AOP 在特定的切入点上执行的增强处理,有 before(前置)、after(后置)、afterReturning(最终)、afterThrowing(异常)、around(环绕)。
5. Pointcut(切入点)
带有通知的连接点,在程序中主要体现在书写切入点表达式。
6. weave(织入)
将切面应用到目标对象并导致代理对象创建的过程。
7. introduction(引入)
在不修改代码的前提下,引入可以在运行期为类动态地增加一些方法或字段。
8. AOP 代理(AOP Proxy)
AOP 框架创建的对象,代理就是目标对象的加强。Spring 中的 AOP 代理可以是 JDK 动态代理,也可以是 CGLIB 代理,前者基于接口,后者基于子类。
9. 目标对象(Target Object)
包含连接点的对象,也被称作被通知或被代理对象,POJO。
评论