java三种代理 -- 静态、动态代理、Cglib
参考文章:
1、https://www.zhihu.com/question/20794107/answer/658139129(讲解静态、动态代理细致入微)
2、关于Cglib:https://zhuanlan.zhihu.com/p/70098824
1、代理总体目的:在目标对象的功能基础上,扩展其功能。不改变其本身的功能;
2、常见的代理模式:静态、动态、Cglib代理。前两者适合实现了接口的目标对象,后者适合没有实现接口的目标对象;
3、有接口的目标对象代理思路:基于复制 + 扩展的思路,创建一个代理类:为了更好地在原有基础上进行扩展,可以让代理类和目标类实现同一个接口(类似于复制,然后再进行扩展);
4、基于不同的“复制“方式,分为静态和动态代理:以下主要用于理解记忆,具体代码参考文章。
- 静态如下:
- 动态如下:
跳过生成代理类,直接生成代理对象。
关于代理对象和目标对象之家的桥梁 - InvocationHandler对象: