JDK动态代理
JDK动态代理需要提供接口才能使用
- 1、定义接口
public interface HelloWorld {
public void sayHello();
}
- 2、接口实现类
public class HelloWorldImpl implements HelloWorld {
@Override
public void sayHello() {
System.out.println("hello world");
}
}
- 3、代理对象的绑定和代理逻辑实现
public class JdkProxyExample implements InvocationHandler {
private Object target=null;
public Object bind(Object target){
this.target=target;
return Proxy.newProxyInstance(target.getClass().getClassLoader(),target.getClass().getInterfaces(),this);
}
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
System.out.println("进入代理逻辑方法");
System.out.println("在调度真实对象之前的服务");
Object obj=method.invoke(target,args);
System.out.println("在调用真实对象之后的服务");
return obj;
}
}
- 4、测试
public class Main {
public static void main(String[] args) {
JdkProxyExample jdkProxyExample=new JdkProxyExample();
HelloWorld proxy=(HelloWorld)jdkProxyExample.bind(new HelloWorldImpl());
proxy.sayHello();
}
}