一、前言
spring中AOP面向切面编程的原理就是利用了动态代理
代理设计模式
1.真实对象(老总)
2.代理对象(秘书)
3.抽象对象(抽象功能),谈小目标
二、静态代理
代理对象代理真实对象所有的功能
1.自己编写代理类
2.每个代理的功能需要单独编写
静态代理设计模式的缺点:
1.当代理功能比较多时,代理类中方法需要些很多
老总类,真实对象
秘书,代理对象
功能模块接口:
主函数:调用
三、动态代理
所谓的动态代理的原理其实就是反射,静态代理需要重写所有的功能,而利用放射则是在调用具体的方法的时候才去生成
1.jdk动态代理
jdk自带,不要额外导入jar
老总类和功能类接口和静态代理一样
区别:
代理类:
调用类:
2.cglib动态代理
1.需要导包
2.不需要写之前的功能接口
代理类:
调用类: