JDK的动态代理深入解析(Proxy,InvocationHandler)-I
1. DK首先定义一个接口(动态代理就是建立在接口编程上,这个接口就是被代理对象)
public interface UserDao {
public void save(User user);
public void delete(User user);
public void update(User user);
}
2. 接口的实现类(真实业务的实现)
public class UserDaoImpl implements UserDao {
public void delete(User user) {
System.out.println("删除用户成功。。。。");
}
public void save(User user) {
System.out.println("插入用户成功。。。。");
}
public void update(User user) {
System.out.println("更新用户成功。。。。");
}
}
3. 实现InVocationHandler接口的invoke()方法
public class LogHandler_old implements InvocationHandler {
// 组合的方式引入被代理对象
private Object target = null;
private static Logger logger = Logger.getLogger(LogHandler_old.class);
// 构造函数注入被代理对象
public LogHandler_old(Object target) {
this.target = target;
}
/*
* invoke 必须根据需要 Override
* Proxy.newProxyInstance(...)时候会自动调用这个invoke方法
*/
public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable {
logger.info(method.getName() + "开始执行。。。。");
Object result = method.invoke(target, args);
logger.info(method.getName() + "执行结束。。。。");
return result;
}
}
-----由于对文章长度的限制,所以,其继续读第二篇。。。