Java 时空。。。

我是一个简单,执着的笨笨的大男孩,喜欢漫画和动画片!我们可以做朋友吗?

2010-05-22 15:30

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;

    }

}

-----由于对文章长度的限制,所以,其继续读第二篇。。。

评论