动态代理是什么?
-
动态代理其实是代理模式的一种具体的实现,指的是在程序运行期间,能够动态的生成目标对象的一个代理类,可以直接加载在内存中的字节码文件,还能够实现对目标对象所有方法的增强。通过这种方式,我们可以在不改变目标对象或无法改变目标对象源码的情况下,对目标对象的方法执行前后顺序进行干预。
动态代理要怎么用呢?首先,需要准备好我们需要代理的类和接口,因为JDK的动态代理是基于接口才能够实现的,所以被代理的对象是必须要有接口才行的。按照动态代理的用法,还需要自定义一个处理器,用来编写自定义逻辑,实现对被代理对象的增强。
自定义的处理器需要满足以下要求:首先需要实现InvocationHandler,之后要重写invoke方法,并且在invoke方法中通过加入自定义逻辑的方式,实现对目标对象的增强。
还需要持有一个成员变量,成员变量的是被代理对象的实例,通过构造参数传入。用来支持反射调用被代理对象的方法。需要提供一个参数为被代理对象接口类的有参构造。(用来支持反射调用被代理对象的方法)
运行main方法,查看控制台,大功告成。至此,我们已经完整的完成了一次动态代理的使用。
西南地区IT社群(QQ)
- 云南
- 【昆明网页设计交流吧】243627302
- 【昆明nodejs交流吧】 243626749
- 【VUE】838405306
- 【云南程序员总群】343606807
- 【昆明UI设计】104031254
- 【云南软件外包】15547313
- 贵州
- 【PHP/java源码/站长交流群】55692114
- 四川
- 【成都Java/JavaWeb交流】86669225
- 【vaScript+PHP+MySql】116270060
- 【UI设计/设计交流学习群】135794928
- 重庆
- 【诺基亚 JAVA游戏博物馆】 559479780
- 【PHP,Java,Python,C++接单】 442103442
- 西藏