JDK和CGLB分别实现的动态代理

IT程序员开发必备-各类资源下载清单,史上最全IT资源,个人收藏总结!



Spring在选择用JDK还是CGLiB的依据:

   (1)当Bean实现接口时,Spring就会用JDK的动态代理

   (2)当Bean没有实现接口时,Spring使用CGlib是实现

动态代理的用途:

通常可以做权限拦截、系统监控等


JDK实现的动态代理:

PersonService.java接口

JDK和CGLB分别实现的动态代理_第1张图片

需要代理的PersonServiceBean.java实现类

JDK和CGLB分别实现的动态代理_第2张图片

JDK实现的动态代理类:JDKProxyFactory.java 

JDK和CGLB分别实现的动态代理_第3张图片

测试类AOPProxyTest.java:

JDK和CGLB分别实现的动态代理_第4张图片

执行后输出:

JDK和CGLB分别实现的动态代理_第5张图片


CGlib实现的动态代理:

需要代理的AnimalServiceBean.java类,没有实现任何接口

JDK和CGLB分别实现的动态代理_第6张图片

CGlib实现的动态代理类:CGlibProxyFactory.java
JDK和CGLB分别实现的动态代理_第7张图片

测试类AOPProxyTest.java:

JDK和CGLB分别实现的动态代理_第8张图片

输出结果:

JDK和CGLB分别实现的动态代理_第9张图片

源代码:见:  JDK和CGlib分别实现的动态代理源代码  


你可能感兴趣的:(JDK和CGLB分别实现的动态代理)