一、概念
给某一对象提供一个代理,并由代理对象来控制对真实对象的访问。
二、分类
-
静态代理(需要自行写代理类Proxy进行对业务接口的实现)
-
动态代理
用于监测方法执行性能的Handler执行器
public class PerformanceInvocationHandler implements InvocationHandler {
//调用方法的对象实例
private Object real;
public PerformanceInvocationHandler(Object real) {
this.real = real;
}
/**
*
* 参数 proxy:代理对象
* 参数 method:当前执行的方法对象
* 参数 args:参数列表
*/
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
long begin = System.currentTimeMillis();
//真实业务对象当前的执行方法(基于反射的形式)
Object returnValue = method.invoke(real, args);
long end = System.currentTimeMillis();
System.out.println("执行耗时: "+(end-begin)+"毫秒!");
return returnValue;
}
}