设计模式(四):代理模式之CGLIB动态代理(CGLIB Dynamic Proxy)

基于静态代理和动态代理需要绑定接口的局限性,而对类的代理在某些场景下确实是需要的,所以某些大牛就创造了CGLIB这个动态代理类库。

CGLIB底层是基本ASM字节码处理框架,该库允许在程运行时对字节码进行修改和动态生成新的类。

CGLIB所创建的动态代理对象的性能比JDK所创建的动态代理对象的性能高(大概10倍),但CGLIB在创建代理对象时所花费的时间却比JDK动态代理多(大概8倍)。

对于singleton的代理对象或者具有实例池的代理,因无须频繁创建对象,比较适用CGLIB动态代理技术;反之则适合采用JDK动态代理技术。

阅读更多