1.代理模式
1.1 设计模式:前人总结的一套解决特定问题的代码.
1.2 代理设计模式优点:
1.2.1 保护真实对象
1.2.2 让真实对象职责更明确.
1.2.3 利于扩展
1.3. 代理设计模式三要素
1.3.1 真实对象
1.3.2 代理对象
1.3.3 抽象对象(抽象功能)
2 静态代理 由代理对象代理所有真实对象的功能.
2.1 自己编写代理类
2.2 每个代理的功能需要单独编写
2.3 静态代理设计模式的缺点:
2.3.1 当代理功能比较多时,代理类中方法需要写很多.
3 动态代理-jdk
3.1和 cglib 动态代理对比
3.1.1 优点:jdk 自带,不需要额外导入 jar
3.1.2 缺点:
3.1.2.1 真实对象必须实现接口
3.1.2.2 利用反射机制.效率不高.
4 动态代理-cglib
4.1cglib 优点:
4.1.1 基于字节码,生成真实对象的子类.
4.1.1 运行效率高于 JDK 动态代理.
4.1.2 不需要实现接口
4.2. cglib 缺点:
4.2.1 非 JDK 功能,需要额外导入 jar
4.3使用 spring aop 时,只要出现 Proxy 和真实对象转换异常
4.3.1 设置为 true 使用 cglib
4.3.2 设置为 false 使用 jdk(默认值)