Java 动态代理,面试里先分哪两类

118次阅读
没有评论

动态代理是 Java 面试里的老题,但很多人一开口就直接背 API,结果主线不清。更好的讲法,是先说明它解决什么问题,再分成 JDK 动态代理和 CGLIB 两类来看。

先说明为什么需要动态代理

如果每个目标类都手写一个代理类,成本会非常高。动态代理的价值就在于把日志、事务、鉴权这类横切逻辑抽出来,通过统一方式织入目标对象。

JDK 动态代理基于接口

这一类适合目标对象本身实现了接口的场景。回答时重点说清楚它通过代理对象拦截方法调用,再交给统一处理逻辑,而不是只念类名。

CGLIB 更适合没有接口的类

如果目标类没有接口,通常会考虑基于继承生成子类的方式。这里顺手提一下 final 类和 final 方法的限制,会让回答更完整。

最好连到 Spring 场景

比如 AOP、声明式事务、远程调用代理,这些都是动态代理最常见的落地场景。把原理和框架实践连起来,比孤立背概念更有说服力。

结论

回答 Java 动态代理时,先讲“为什么需要”,再区分 JDK 代理和 CGLIB,主线会清楚很多。

正文完
 0
bdspAdmin
版权声明:本站原创文章,由 bdspAdmin 于2026-04-08发表,共计418字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)