简介:SpringAop面向切面编程,是通过预编译的方式和运行期动态代理实现程序功能的同一维护的一种技术。(这个能读懂,就证明对AOP有了解)
解释:Aop的底层是通过Spring提供的动态代理技术实现的。在运行期间,Spring通过动态代理技术动态的生成代理对象,代理对象方法执行时进行增强功能的介入,再去调用目标对象的方法,从而完成功能的增强。
下面分别简单实现一下JDK代理(基于接口的动态代理技术)和CGLIB代理(基于父类的动态代理技术)。有兴趣的可以自己敲一下,一般来说懂原理就行。
JDK代理:基于接口的动态代理技术
场景:
1. 一个接口内容如下
2.接口其中一个实现类如下:计算俩数之和
3.介入的增强方法如下:将一个数的乘积返回
4.实现JDK动态代理
运行结果:
CGLIB代理:基于父类的动态代理技术
场景:
1.父类:返回a-b
2.子类继承重写方法返回a+b
3.介入的增强方法同上
4.实现动态代理技术
运行结果: