JDK代理实现接口 CGLIIB不用
JDK代理
public interface HelloWord {
public void sayHelloWorld();
}
public class HelloWorldImpl implements HelloWord{
@Override
public void sayHelloWorld() {
System.out.println("Hello World");
}
}
import org.junit.Test;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
public class JdkProxyExample implements InvocationHandler {
private Object target;
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("进入代理逻辑");
Object obj = method.invoke(target,args);
System.out.println("离开代理逻辑");
return obj;
}
@Test
public void testJdkProxy(){
JdkProxyExample jdk = new JdkProxyExample();
HelloWord proxy = (HelloWord)jdk.bind(new HelloWorldImpl());
proxy.sayHelloWorld();
}
}