【大白话说Java面试题】【Java基础篇】第29题:静态代理和动态代理的区别是什么

第29题:静态代理和动态代理的区别是什么

📚 回答:

  • 核心对比:
1. 实现代质关系的方式
  • 静态代理:在编码阶段明确目标对象和代理对象的关系,代理类需要手动编写。
  • 动态代理:在运行时动态生成代理对象,无需手动编写代理类。
2. 灵活性
  • 静态代理:灵活性较差,一旦接口增加方法,目标对象和代理对象都需要同步维护。
  • 动态代理:灵活性高,代理类由程序自动生成,无需手动维护。
3. 性能
  • 静态代理:性能较高,因为代理类是直接编译好的。
  • 动态代理:性能略低,因为代理类是在运行时动态生成的,会有一定的开销。
4. 使用场景
  • 静态代理:适合小型项目或简单的功能扩展场景。
  • 动态代理:适合大型项目或需要灵活扩展功能的场景(如AOP编程)。

💡 面试官视角:

  • 面试官可能会问"为什么动态代理更灵活?"答:因为动态代理不需要提前编写代理类,代理对象是在运行时根据需求动态生成的,减少了代码冗余。
  • 面试官可能会追问"动态代理有哪些局限性?"答:JDK动态代理要求目标对象必须实现接口,CGLIB动态代理无法代理final类或final方法。

📌 专栏 :大白话说Java面试题 --- 01-Java基础篇

相关推荐
xiaoqiMikko6 小时前
JVM 线上排查实战(七):jps 看不见它、jstack 连不上它,可它明明活得好好的
java·jvm
llqbzllll6 小时前
Spring AI 工具调用不是反射一下就结束:用 2.0.1 跑通失败恢复与调用上限
人工智能·后端
狼爷7 小时前
Rust/Go/Java/Python/PHP 大比拼:负载下后端框架到底差多少?
java·后端·编程语言
念何架构之路7 小时前
zap扩展生态与总结
java·前端·数据库
mantou1328 小时前
我给 AI Agent 做了个「油猴」:让 Claude Code / Codex 直接用你已登录的浏览器
前端·javascript·后端
程序员老赵8 小时前
Docker 部署 DeepSeek Harness:轻松搭建局域网里的 AI Agent 平台
后端·ai编程·deepseek
第七页独白8 小时前
汽车零件厂如何通过 QMS 真正落地 IATF 16949——QMS软件系统:品质检验-内审稽核-8d客诉管理:全星质量管理软件系统
java·前端·数据库
YIAN8 小时前
实战|用 DeepSeek + SQLite 从零搭建轻量 Text2SQL 查询助手
后端·sqlite·deepseek
王中阳Go8 小时前
自己摸了 2 个月零 offer,补底子只用了 3 块:Go 后端转 AI 最难的不是技术
后端·agent·ai编程
高频因子挖掘机8 小时前
第一次补历史行情:按股票拆,还是按日期拆请求?
后端·github·api