JavaWeb学习-Spring框架-10-Spring aop思想和原理和一些名词解释

开始进入aop编程学习,Spring 中aop(Aspect-oriented programming 切面编程)是指Spring提供了aop编程的支持。aop是一种思想,叫切面编程,本篇简单学习下aop思想和aop技术实现原理。在具体学习aop之前,我们需要了解几个aop领域地名词含义。

1.aop思想

aop思想,总结来说就是八个字:横向重复,纵向抽取。 下面这个图来理解这八个字。

JavaWeb学习-Spring框架-10-Spring aop思想和原理和一些名词解释_第1张图片

上面这个图filter这个像一把刀一样切下来,把横向三个servlet中都出现重复的解决乱码的代码,提取出来放到了Filter这层,这个就是aop思想。

 

2.aop原理

Spring能够为容器中管理的对象生成动态代理。


以前我们要使用动态代理,我们需要自己调用下面这个方法
Proxy.newProxyInstance()生成代理对象。

Spring能够帮我们生成代理对象

 

3.Spring实现aop技术

动态代理:

动态代理有一个缺点,被代理对象必须要实现接口才能产生代理对象,如果没有接口,将不能使用动态代理技术。

cglib代理:

Spring为了达到所有对象都能代理,所以引入一个第三方代理技术,cglib代理。
可以对任何类生成代理,代理的原理是对目标对象进行继承代理。如果目标对象被final修饰,那么该类无法被cglib代理。

Spring就是使用这两种代理技术的混合,如果要代理的对象有接口,Spring就会优先使用动态代理技术,如果没有接口,就采用cglib代理。

 

4.AOP名词解释


joinpoint(连接点):所谓连接点是指那些被拦截到的点,在Spring中,这些点指的是方法,因为只支持方法类型的连接点。


pointcut(切入点):所谓切入点是指我们要对哪些Joinpoint进行拦截的定义。


Advice(通知/增强):所谓通知就是指拦截到joinpoint之后所要做的事情就是通知。通知分为前置通知
后置通知,异常通知,最终通知,环绕通知(切面要完成的功能)


Introduction(引介):引介是一种特殊的通知,在不修改类代码的前提下。Introduction可以在运行期为类动态地添加一些方法或者字段。


Target(目标对象):代理地目标对象


Weaving(织入):是指把增强应用到目标对象来创建新地代理对象地过程。Spring采用动态代理织入,
而AspectJ采用编译期织入和类装载期织入。


Proxy(代理):一个类被AOP织入增强后,就产生一个结果代理类。


Aspect(切面):是切入点和通知(引介)地结合。

 

你可能感兴趣的:(JavaWeb学习-Spring框架-10-Spring aop思想和原理和一些名词解释)