首页
题库
面试
求职
学习
竞赛
More+
所有博客
搜索面经/职位/试题/公司
搜索
我要招人
去企业版
登录 / 注册
首页
>
试题广场
>
JDK动态代理是什么?和cglib区别?
[问答题]
JDK动态代理是什么?和cglib区别?
查看答案及解析
添加笔记
求解答(0)
邀请回答
收藏(46)
分享
纠错
10个回答
添加回答
7
哪托儿
JDK代理是基于接口实现的一种代理方式,通过反射机制去生成匿名代理类,通过Proxy.newProxyInstance方法创建代理对象,实现InvocationHandler接口的invoke方法实现对被代理对象的增强操作;CGLIB代理是基于继承方式实现的一种代理方式,通过字节码技术生成目标类的子类,通过Enhancer创建代理对象,实现MethodInterceptor的intercept方法实现对被代理对象的增强逻辑;由于受继承因素限制,CGLIB不能代理有final修饰的类和方法;而JDK代理必须代理接口
发表于 2025-05-22 16:01:40
回复(0)
2
说等下个版本吧的熊熊很有担当
jdk动态代理必须基于接口 单词调用快 cglib可以代理普通类 大量调用快 且需要三方类库 无法代理final类或者方法
发表于 2025-10-28 16:37:07
回复(0)
0
石皮流水
JDK动态代理是Java基于接口实现的代理技术,通过反射机制在运行时生成代理类。 CGLIB动态代理则是操作字节码,生成子类代理。 与CGLib的区别:1. JDK需实现接口,CGLib通过继承直接代理普通类; 2. JDK无需第三方库,CGLib需引入ASM包; 3. CGLib无法代理final类/方法,JDK无法代理无接口类; 4. CGLib生成代理类性能通常更高。 Spring默认优先JDK动态代理,没有接口时用CGLIB动态代理
发表于 2025-12-16 17:01:44
回复(0)
0
牛客636875496号
发表于 2025-10-18 19:51:22
回复(0)
0
冷艳的独行侠前程似锦
发表于 2025-09-19 09:56:06
回复(0)
0
爱敲代码的梅
JDK代理是基于接口实现的一种代理方式,通过反射机制去生成匿名代理类,通过Proxy.newProxyInstance方法创建代理对象,实现InvocationHandler接口的invoke方法实现对代理对象的增强操作;CGLIB代理是基于继承方式实现的一种代理方式,通过字节码技术生成目标类的子类,通过Enhancer创建代理对象,实现MethodInterceptor的intercept方法实现对被代理对象的增强逻辑;由于受继承因素限制,CGLib不能代理有final修饰的类和方法;而JDK代理必须代理接口。
发表于 2025-09-10 14:03:31
回复(0)
0
牛客303535415号
动态代理是jdk中自带的方法,主要基于接口实现的一种代理方式,通过在类中进行动态代理,可以通过反射机制去生成匿名代理类,而CGLIB是外部的工具类,是通过继承的方式通过字节码技术生成目标类的子类
发表于 2025-09-03 14:57:13
回复(0)
0
why_1
jdk动态代理和cjlib动态代理是aop底层的实现方式,当类实现接口时默认使用jdk动态代理生成代理对象去执行增强逻辑。若类没有实现接口则使用cjlib动态代理
发表于 2025-08-28 16:00:26
回复(0)
0
acodebird
1.JDK动态代理是基于接口实现的一种代理方式,JDK本身支持,无需引入外部依赖,通过Proxy.newInstance获取代理对象,实现InvocationHandler接口,重写invoke()方法,通过代理对象执行方法时会转发到对应的invoke(),从而实现动态代理
2.CGLib动态代理是基于继承实现的一种代理方式,需要引入外部依赖,通过Enhancer类获取代理对象,实现MethodInterceptor接口,重写intercept()方法,代理对象指定方法时会被拦截到intercept方法中
综上:JDK动态代理只能代理实现接口的类或者接口,CGLib可以代理没有实现接口的类(但是不能代理final修改的类和方法)
发表于 2025-07-23 23:40:28
回复(0)
0
ygam
JDK代理是基于接口实现的一种代理方式,通过反射机制去生成匿名代理类,通过Proxy.newProxyInstance方法创建代理对象,实现InvocationHandler接口的invoke方法实现对被代理对象的增强操作;CGLIB代理是基于继承方式实现的一种代理方式,通过字节码技术生成目标类的子类,通过Enhancer创建代理对象,实现MethodInterceptor的intercept方法实现对被代理对象的增强逻辑;由于受继承因素限制,CGLIB不能代理有final修饰的类和方法;而JDK代理必须代理接口
发表于 2025-07-01 16:33:43
回复(0)
这道题你会答吗?花几分钟告诉大家答案吧!
提交观点
问题信息
来自:
2025年-华为-通用...
难度:
10条回答
46收藏
709浏览
热门推荐
相关试题
什么是主从同步?MySQL 如何实现?
评论
(2)
来自
2025年-华为-通用软...
如何评估 / 判断索引是否生效?常...
评论
(9)
来自
2025年-华为-通用软...
如何创建线程池?线程池常见参数有哪些?
Java
评论
(86)
来自
2025年-华为-通用软...
ThreadLocal 的用法和实...
Java
评论
(77)
来自
2025年-华为-通用软...
扫描二维码,关注牛客网
意见反馈
下载牛客APP,随时随地刷题