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