第一次听说jdk动态代理是在spring的代理对象原理中,也知道了代理模式还可以这样实现,还有一种字节码形式实现。普通业务代码中,我们很少这样写,通常都会注入代理对象的方式实现,但是如果你仔细观察各种基础组件就会发现很多实用类似的原理。本文就jdk动态代理示例。
- 下面是示例代码
先定义一个demoservice接口
1 | package com.zw.dubbo.service; |
实现调用实现类InvocationHandler
1 | package com.zw.dubbo.proxy; |
接口代理调用测试
1 | package com.zw.dubbo.proxy; |
执行结果
1 | hello, xiao ming |
从上面的执行结果来看,虽然我们的代码调用的是demoService.sayHello方法,但是实际调用的是TestInvocationHandler.invoke方法。在平时研究代码是碰到这种定义了接口但是又找不到实现类的情况,可能就是动态代理了。