学习笔记4:JDK代理类简单实现学习
DK代理是Java原生的对接口进行强化的方法,可以对代码进行切面修改,从而在特定接口函数调用前和调用后进行一些额外操作。这个方法相对于cglib来说不是那么通用,只能对接口进行处理。下面简单介绍一下进行JDK代理类的流程
首先创建一个接口,以及其一个实现,如下所示:
之后实现代理接口,如下所示:
之后,在主函数里生成一个实现类,以及代理类,并对接口进行调用:
命令行输出结果:
Test12:func
Test12InvocationHandler:invoke
可以看到,生成的接口代理类会通过InnovacationHandler接口的invoke方法来调用指定接口代码,此处额外进行的println操作也被触发。
一些总结:
JDK代理本质是通过切面的形式对接口进行装饰者模式的修饰,在调用被代理的对象的前后可以进行一定处理,根据情况也可以选择跳过操作,或者使一个接口函数的调用完全改成另外的方法执行。如果进行迭代装饰,则会按照装饰的顺序从新到旧进行递归调用。
同时因为JDK代理是对一个对象进行了装饰,因此这个装饰过程也是需要手动进行的,例如通过工厂模式在创建进行包装等。
我现在还没有实际需要用到JDK代理的应用场景,如果有必要在工作中应用的话可能在测试后能有更多理解吧。

