简单的例子:
接口:ITestProxy
package reflrction.proxy; public interface ITestProxy { |
实现类:ProxyImpl
package reflrction.proxy.staticState; import reflrction.proxy.ITestProxy; public class ProxyImpl implements ITestProxy { @Override @Override } |
动态代理类:DynamicProxy
package reflrction.proxy.dynamic; import java.lang.reflect.InvocationHandler; public class DynamicProxy implements InvocationHandler { private Object target; /** // 要绑定接口(这是一个缺陷,cglib弥补了这一缺陷),此处this 是指$Proxy0(InvocationHandler) } @Override } } |
主函数:DynamicProxyMain
package reflrction.proxy.dynamic; import reflrction.proxy.ITestProxy; public class DynamicProxyMain { /** } |
运行结果:
动态代理 invoke 开始 ProxyImpl test001>>>>>>>>>>>>>>>>>>>>>>>>>> 动态代理 invoke 结束 动态代理 invoke 开始 ProxyImpl test002>>>>>>>>>>>>>>>>>>>>>>>>>> 动态代理 invoke 结束 com.sun.proxy.$Proxy0 |
以上代码解析:
Proxy.newProxyInstance方法会做如下几件事:
2,testProxy.test001();
|