在 Java 中,Proxy(代理) 主要分为 静态代理 和 动态代理(JDK 动态代理、CGLIB 等)。代理模式的核心思想是:在不修改原对象代码的前提下,增强或控制对目标对象的访问。
下面是 Java 中 Proxy 代理的常见使用场景,按实际开发和架构层面分类说明:
最常见场景
✅ 典型代表:
示例:
// 在方法执行前后增强逻辑
before();
target.method();
after();
代理隐藏网络通信细节,让调用像本地方法一样。
场景:
✅ 原理:
场景:
示例:
ProxyImage proxy = new ProxyImage();
proxy.display(); // 真正使用时才加载
场景:
示例:
if (hasPermission()) {
target.execute();
} else {
throw new SecurityException();
}
场景:
示例:
if (cache.contains(key)) {
return cache.get(key);
}
return target.method();
场景:
@Transactional)✅ 实现方式:
场景:
✅ 工具:
很多 Java 框架“看不见但大量使用代理”:
| 框架 | 代理用途 |
|---|---|
| Spring | AOP、事务 |
| MyBatis | Mapper 接口 |
| Hibernate | 延迟加载 |
| Dubbo | 远程调用 |
| 对比项 | JDK 动态代理 | CGLIB |
|---|---|---|
| 要求 | 必须有接口 | 可有可无 |
| 性能 | 较低(反射) | 较高 |
| 原理 | 接口 | 继承 |
final(CGLIB 不支持)如果你愿意,我可以:
你更想了解哪一块?
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。