1.数据记录FileStatus
public class FileStatus {
private String filename;
private long time;
public FileStatus(String filename) {
this.filename=filename;
this.time=(new Date()).getTime();
}
public String toString() {
return "File: "+filename+" Create at "+(newDate(time));
}
}
2.服务接口和实现
public interface QueryStatus {
FileStatus getFileStatus(String filename);
}
public class QueryStatusImpl implementsQueryStatus {
@Override
public FileStatus getFileStatus(String filename){
FileStatus status=newFileStatus(filename);
return status;
}
}
3.代理的InvocationHandler
public class MyInvocationHandler implementsInvocationHandler {
private QueryStatus queryStatus;
public MyInvocationHandler(QueryStatusqueryStatus) {
this.queryStatus = queryStatus;
}
@Override
public Object invoke(Object proxy, Methodmethod, Object[] args) throws Throwable{
System.out.println("----事务开始--");
System.out.println("正式做事");
Object ret =method.invoke(queryStatus, args);
System.out.println("做事完成");
System.out.println("----事务结束--");
return ret;
}
}
4.使用代理
public static void main(String[] args) {
Class[] interfaces = newClass[] { QueryStatus.class };
ClassLoaderclassLoader = QueryStatus.class.getClassLoader();
MyInvocationHandler handler =new MyInvocationHandler(new QueryStatusImpl());
QueryStatusqueryProxy = (QueryStatus)Proxy.newProxyInstance(classLoader, interfaces,handler);
FileStatusstatus = queryProxy.getFileStatus("/tmp/testDP");
System.out.println("结果:"+status);
}
打印结果:
----事务开始--
正式做事
做事完成
----事务结束--
结果:File: /tmp/testDP Create at Fri Feb 28 12:02:47 CST2014