JDK的动态代理机制
JDK的动态代理机制
JDK的动态代理是jdk1.3及以上版本提供的一种编程方法,它为一些面向切面的操作如性能检测,权限验证,日志记录等提供了一种解决方案。它是在被代理类的某个方法在执行前后,通过代理类执行一些新的逻辑。下面通过一个例子加以说明。
1.JDK的动态代理,必须要有一个接口,所以先定义一个接口,:
public class TestProxy {/** * @param args */public static void main(String[] args) {// TODO Auto-generated method stub //new 一个被代理对象 ProxyInterface pi = new ProxyClass(); //new一个代理对象 Proxyhandler ph = new Proxyhandler(); //将被代理对象赋给代理对象 ph.setPi(pi); //通过代理机制生成一个新的被代理对象 ProxyInterface p = (ProxyInterface) Proxy.newProxyInstance(pi.getClass().getClassLoader(),new Class[]{ProxyInterface.class}, ph); //执行代理方法 p.execute();}}输出结果如下:
------Before execute------------
execute method
------After execute-------------
通过以上代码,就实现了一个非常简单的JDK动态代理,但它有个缺点,就是必须要有接口,如果是继承类的话,它就无法实现动态代理了。不过这可以用CGLIB动态代理来解决。