在JDK1.3之后,加入了可协助开发动态代理功能的API,您不必为特定对象与方法编写特写的代理对象,使用动态代理,可以使得一个处理者(Handler)服务于各个对象.首先,一个处理者的类设计必须实现java.lang.reflect.InvocationHandler接口,
动态代理对象如下:
package com.hollyinfo.springdemo;
import java.util.logging.*;
import java.lang.reflect.*;
public class LogHandler implements InvocationHandler{
private Logger logger = Logger.getLogger(this.getClass().getName());
private Object delegate;
public Object bind(Object delegate){
this.delegate = delegate;
return Proxy.newProxyInstance(delegate.getClass().getClassLoader(), delegate.getClass().getInterfaces(), this);
}
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;
}
private void log(String message){
logger.log(Level.INFO,message);
}
}