首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

JDK动态署理与CGLIB代理的对比

2012-11-01 
JDK动态代理与CGLIB代理的对比这篇文章试验了JDK动态代理与CGLIB动态代理。从Spring的AOP框架介绍中得知对

JDK动态代理与CGLIB代理的对比

这篇文章试验了JDK动态代理与CGLIB动态代理。从Spring的AOP框架介绍中得知对于使用接口的类,Spring使用JDK 动态代理(原来做项目中试图从Bean强制转换为实现类,结果报错,原来是这么回事),没有接口的就使用别的AOP框架aspectj,但这些都是依赖于 Java字节码工具ASM生成一个原类的新类,调用Callback

但是JDK动态代理为什么必须使用接口一直很疑惑,难道原理不是像ASM一样修改字节码吗?带着这个疑问,开始看JDK的Proxy代码。使用JDK动态代理的代码代码。

import com.proxy.ForumServiceImpl;import java.lang.reflect.Proxy;public class TestCglibProxy {    public static void main(String args[]){        CglibProxy proxy = new CglibProxy();        //动态生成子类的方法创建代理类        ForumServiceImpl fsi =                (ForumServiceImpl)proxy.getProxy(ForumServiceImpl.class);        fsi.removeForum(10);        fsi.removeTopic(2);    }}


总结下Spring的AOP运用的设计模式 , AOP 主要利用代理模式, 然后依赖通知(本人认为是策略模式)来实现AOP。 这样通知就可以独立发展。











热点排行