动态代理
简而言之就是:首先创建一套动态代理的规则,创建好自己的接口,和实现类,在调用时直接调用(缺少什么参数,补充哪个参数!)
实现步骤:
-
设计动态代理的规则(实现
**InvocationHandler
**接口,重写invoke
方法)- 定义一个有参构造方法,用于接收要执行 谁 的方法(对象)
- 执行真实的业务场景使用
method.invoked(“哪个对象方法”,arges)
- 在
method.invoked()
的前后补充需要的扩展项目
-
定义真实的接口(userService)
- 定义接口的实现类,实现之后直接重写方法。
- 测试类中,创建动态代理(类加载器,接口数组,刚刚创建的动态代理执行逻辑)
静态代理
简而言之就是:创建一个接口
,创建一个实际的接口实现类
,在里面实现具体的方法,创建一个代理的实现类
,在里面(创建实际的实现类对象之后)调用实际的业务,然后再上下加上自己需要的拓展公共逻辑。
- 创建一个接口,定义实现的方法
- 写一个实现类,进行实现这个接口
- 代理对象继续实现接口