JDK动态代理与Spring AOP

来源:互联网 发布:shopnc java 源码 编辑:程序博客网 时间:2024/05/19 03:18

前段时间通过深入研究Spring框架,发现其使用了很多设计模式使其具有良好的架构,其中就包括了很多的代理模式。我们知道,代理模式有如下2种实现方式:

1. 被代理的类和原始类实现同一个接口,然后代理类通过聚合原始类的方法,来实现代理的功能;

2. 被代理的类继承原始类,然后重写原始类的方法并且织入代理功能,来实现代理。

了解了代理模式,这里就可以深入探讨一下Spring的AOP了,Spring的AOP实现方式有2种:

- JDK动态代理

- CG Library

因为JDK的动态代理是基于上述第1种方式实现的。JDK的动态代理在这个基础上动态化的生成匿名类,通过将在原始类上的代理功能通过反射和运行时编译的技术,实现的动态代理。所以综上,2种实现方式的区别为:

- JDK动态代理:使用的第1种代理模式实现,需要被代理类实现了一个特定接口

- CG Library:使用第2种代理模式实现,无上面的限制,他是通过继承的方式实现的代理

理解了代理模式以及动态代理模式,再来理解AOP代理的2种实现方式就水到渠成了。

1 0
原创粉丝点击