java实现动态代理与cglib实现动态代理实现方式有什么不同

2025-03-30 23:03:46
推荐回答(1个)
回答1:

一、背景在上一篇博客中(java动态代理:)提到,java的动态代理是必须基于接口的,而在编程中,使用到的外部类并不是基于接口编程的比比皆是,这有如何实现动态代理看使用可以基于类实现动态代理的CGLib!二、简介CGLib(CodeGenerationLibrary)是一个强大、高性能的Code生成类库,它可以在程序运行期间动态扩展类或接口;它的底层是使用java字节码操作框架ASM实现;三、使用CGLib核心类:1、net.sf.cglib.proxy.Enhancer:主要增强类,通过字节码技术动态创建委托类的子类实例;2、net.sf.cglib.proxy.MethodInterceptor:常用的方法拦截器接口,需要实现intercept方法,实现具体拦截处理