设计模式(四):代理模式之CGLIB动态代理(CGLIB Dynamic Proxy)
基于静态代理和动态代理需要绑定接口的局限性,而对类的代理在某些场景下确实是需要的,所以某些大牛就创造了CGLIB
这个动态代理类库。
CGLIB
底层是基本ASM
字节码处理框架,该库允许在程运行时对字节码进行修改和动态生成新的类。
CGLIB
所创建的动态代理对象的性能比JDK
所创建的动态代理对象的性能高(大概10倍),但CGLIB
在创建代理对象时所花费的时间却比JDK
动态代理多(大概8倍)。
对于singleton
的代理对象或者具有实例池的代理,因无须频繁创建对象,比较适用CGLIB
动态代理技术;反之则适合采用JDK
动态代理技术。