Spring系列教程——10AOP概述与原理
本节开始我们讲解一个重要的内容:AOP。AOP全称为Aspect Oriented Programming
,即面向切面编程。他是面向对象编程的一个延续,他是一种通过预编译方式
和运行期动态代理
实现程序功能的统一维护的一种技术。AOP降低了程序的耦合度,他采取横向抽取
机制,取代了传统纵向继承体系
重复性代码。
一.横向抽取机制
在传统的面向对象编程的方式里面,我们会有这样的写法:
BaseService 作为父类,它里面有一个方法add();那么现在他有一个子类UserService,那么自然地他的子类也可以使用add()方法,但是问题在于这个方法来自于父类,这里涉及到一个关键问题就是耦合度比较高,导致开发效率会比较低。
采用AOP技术就会是这样:
我们不让UserService去继承BaseService,这个时候我们创建一个新的类叫做MyAspect(切面类),那么这个切面类的作用就是调用UserService的add()方法时去做一些增强的操作,来获取我们想要的功能,这样的方式就好像在add()方法运行期时横向切入一般,我们称之为横向抽取机制。
这便是AOP的原理,而其底层的实现是采用代理机制进行实现。关于代理机制一共有两种方式:
1.接口 + 实现类 :spring采用 jdk 的动态代理Proxy。
2.实现类:spring采用cglib字节码增强
二.AOP术语讲解
1.target:目标类,需要被代理的类。例如:UserService
2.Joinpoint(连接点):所谓连接点是指那些可能被拦截到的方法
3.PointCut 切入点:已经被增强的连接点。例如:add()
4.advice 通知/增强,增强代码。
5. Weaving(织入):是指把增强advice应用到目标对象target来创建新的代理对象proxy的过程.
6.proxy 代理类
7. Aspect(切面): 是切入点pointcut和通知advice的结合
这是一张AOP执行的原理图:
上一篇:Spring系列教程——09Spring注解开发
下一篇:Spring系列教程——11编程实现AOP