Jdk动态代理
2017-12-26 本文已影响0人
喜欢敲代码的猫
1.提供一个接口
2.被代理类
3.创建代理类
public class StudentJdkProxy implements InvocationHandler {
// 定义一个要代理的原始对象
private Object obj;
// 构造方法
public StudentJdkProxy(Object obj) {
super();
this.obj = obj;
}
// 获得代理对象
public Object getProxy() {
// 参数1:被代理对象类加载器,参数2:被代理类实现的所有的接口,参数3:被代理对象
return Proxy.newProxyInstance(obj.getClass().getClassLoader(), obj.getClass().getInterfaces(), this);
}
// 参数1:代理对象,参数2:被代理的方法,参数3:方法需要的参数
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
before();
// 参数1:被代理对象,参数2:方法参数
Object result = method.invoke(this.obj, args);
after();
return result;
}
public void before(){
System.out.println("前面执行");
}
public void after(){
System.out.println("后面执行");
}
}
4.测试类
5.打印结果