1.编写TimeBook类
package cn.com.spring.service;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
*2011-3-16上午11:11:11
*/
public class TimeBook implements ITimeBook {
private Logger logger = Logger.getLogger(this.getClass().getName());
public void doAuditing(String name) {
logger.log(Level.INFO, "审核数据开始。。。");
System.out.println(name+"写日志");
logger.log(Level.INFO,"审核数据结束!");
}
}
2.编写test类
public static void test1() {
TimeBook tb = new TimeBook();
tb.doAuditing("zhangsan");
}
------------------------------------------------------------------------------------ 静态代理
1.编写ITimeBook接口
package cn.com.spring.service;
/**
*2011-3-16上午11:27:29
*/
public interface ITimeBook {
public void doAuditing(String name);
}
2.编写TimeBook实现类
package cn.com.spring.service.impl;
import cn.com.spring.service.ITimeBook;
/**
*2011-3-16上午11:28:18
*/
public class TimeBookImpl implements ITimeBook {
@Override
public void doAuditing(String name) {
System.out.println(name+"今天去爬山");
}
}
3.编写TimeBookProxy代理类
package cn.com.spring.proxy;
import java.util.logging.Level;
import java.util.logging.Logger;
import cn.com.spring.service.ITimeBook;
/**
* 2011-3-16上午11:30:01
* this is a proxy class
*/
public class TimeBookProxy {
private Logger logger = Logger.getLogger(this.getClass().getName());
private ITimeBook iTimeBook ;
public TimeBookProxy(ITimeBook iTimeBook) {
this.iTimeBook = iTimeBook;
}
public void doAuditing(String name) {
logger.log(Level.INFO, "开始记录日志!");
iTimeBook.doAuditing(name);
logger.log(Level.INFO, "完成记录日志!");
}
}
4.编写test类
public static void test2() {
TimeBookProxy tbp = new TimeBookProxy(new TimeBookImpl());
tbp.doAuditing("zhangsan");
}
------------------------------------------------------------------------ 动态代理
1.编写一个LogProxy代理类
package cn.com.spring.proxy;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
*2011-3-16下午01:09:11
*/
public class LogProxy implements InvocationHandler {
private Logger logger = Logger.getLogger(this.getClass().getName());
private Object delegate = null;
@Override
public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable {
Object obj = null;
try {
logger.log(Level.INFO, "开始记录");
obj = method.invoke(delegate, args);
logger.log(Level.INFO, "结束记录");
} catch (Exception e) {
logger.log(Level.INFO, e.toString());
}
return obj;
}
public Object bind(Object delegate) {
this.delegate = delegate;
return Proxy.newProxyInstance(delegate.getClass().getClassLoader(), delegate.getClass().getInterfaces(), this);
}
}
2.编写test类
public static void test3() {
LogProxy logProxy = new LogProxy();
ITimeBook itb = (ITimeBook)logProxy.bind(new TimeBookImpl());
itb.doAuditing("zhangsan");
}