你看Proxy.newProxyInstance这个方法的第二个参数,通过就这参数就可以把类与代理类关联起来了,重写并非是真正重写,而是在invoke()这个方法内部的method.invoke()方法前或后加入自己业务逻辑,代理比反射更容易实现这个功能.
例如:
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
Object result = null;
try {
log("method starts..." + method); // 加入的业务
result = method.invoke(delegate, args); //执行原来的方法
logger.log(Level.INFO, "method ends..." + method);// 加入的业务
} catch (Exception e) {
log(e.toString());
}
return result;
} |