- 设计模式:前人总结的一套解决特定问题的代码
- 代理设计模式优点
2.1 保护真实对象
2.2 让真实对象职责更明确
2.3 扩展 - 代理设计模式
3.1 真实对象(老总)
3.2 代理对象(秘书)
3.3 抽象对象(抽象功能),谈小目标s静态代理设计模式
- 由代理对象代理所有真实对象的功能
- 1 自己编写代理类
- 2 每个代理的功能需要单独编写
- 静态代理设计模式的缺点
- 1 当代理功能比较多时,代理类中方法需要写很多
动态代理
- 为了解决静态代理频繁编写代理功能缺点
- 分类
2.1 JDK 提供的
2.2 cglib 动态代理JDK 动态代理
- 和 cglib 动态代理对比
1.1 优点:jdk 自带,不需要额外导入jar
1.2 缺点:- 真实对象必须实现接口
- 利用反射机制,效率不高
- 使用 JDK 动态代理时可能出现java.lang.ClassCastException异常
- 1 出现原因:希望把接口对象转换为具体真实对象
cglib动态代理
- cglib 优点
1.1 基于字节码,生成真实对象的子类,运行效率高于 JDK 动态代理
1.2 不需要实现接口 - cglib 缺点:非JDK功能,需要额外导入 jar
- 使用 spring aop 时,只要出现 Proxy 和真实对象转换异常
3.1 设置为 true 使用 cglib
3.2 设置为 false 使用 jdk(默认值)<aop:aspectj-autoproxyproxy-target-class="true"></aop:aspectj-autoproxy>
代理设计模式
最新推荐文章于 2024-06-14 14:58:23 发布