本文章主要介绍了JavaWeb学习-Spring框架-10-Spring aop思想和原理和一些名词解释,具有不错的的参考价值,希望对您有所帮助,如解说有误或未考虑完全的地方,请您留言指出,谢谢!

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

1.aop思想

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

上面这个图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(切面):是切入点和通知(引介)地结合。

发布评论
IT虾米网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!

JavaWeb学习-Spring框架-11-Spring aop开发-导包和定义通知和配置织入对象详解
你是第一个吃螃蟹的人
发表评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。