java动态代理demojava动态代理
首先一个接口
public interface MyInterface {
void method1(String arg);
}
再写一个接口实现类
public class MyInterfaceImpl implements MyInterface {
/*
* (non-Javadoc)
* @see reflectStudy.MyInterface#method1()
*/
@Override
public void method1(String arg) {
System.out.println("MyInterfaceImpl:arg=" + arg);
}
}
然后就是代理类,
动态代理: 如果想要完成动态代理,首先需要定义一个InvocationHandler接口的子类,已完成代理的具体操作。
public class MyInvocationHandler implements InvocationHandler {
private Object obj = null;
public Object getNewInstance(Object obj) {
this.obj = obj;
return Proxy.newProxyInstance(obj.getClass().getClassLoader(), obj.getClass().getInterfaces(), this);
}
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
return method.invoke(this.obj, args);
}
}
client测试
/**
*
*
* @throws Throwable
* @throws SecurityException
*/
private static void invocationHandler2() throws SecurityException, Throwable {
MyInvocationHandler demo = new MyInvocationHandler();
MyInterface impl = (MyInterface) demo.getNewInstance(new MyInterfaceImpl());
String arg = "hello";
Object[] objs = new Object[] { arg };
demo.invoke(impl, MyInterface.class.getMethods()[0], objs);
impl.method1("helllo");
}
run result:
MyInterfaceImpl:arg=hello
MyInterfaceImpl:arg=helllo
Java动态代理的两种实现方法:JDK动态代理和CGLIB动态代理jdk静态代理和动态代理
静态代理、动态代理,以及动态代理的调用说明静态代理和动态代理
#yyds干货盘点# 设计模式之静态代理,jdk动态代理,cglib动态代理的区别jdk静态代理和动态代理
代理模式-动态代理详解(JDK动态代理和CGLIB动态代理)jdk cglib动态代理
代理模式-动态代理(基于接口,JDK动态代理)jdk动态代理和cglib动态代理
代理模式-静态代理模式 代理模式-动态代理(基于接口,JDK动态代理)动态代理是代理模式吗
【设计模式】代理模式 ( 动态代理使用流程 | 创建目标对象 | 创建被代理对象 | 创建调用处理程序 | 动态创建代理对象 | 动态代理调用 )动态代理是代理模式吗