java动态代理

来源:互联网 发布:淘宝电动车价格便宜 编辑:程序博客网 时间:2024/06/08 21:33

动态代理是java的一大特性,它的优势在于可以实现无侵入式的代码扩展。

动态代理主要可以用来做方法的增强,可以在不修改源码的情况下,增强一些方法,在方法执行前后做你任何想做的事情(甚至不需要执行主体方法)。

Spring中的AOP实现原理就是通过动态代理实现的。

话不多说,直接上代码了。。

public interface WriteCode {        public void writeCode();    }

public class WriteCodeImpl implements WriteCode {    @Override    public void writeCode() {        System.out.println("write code...");    }}
public class WriteCodeProxy implements InvocationHandler {        private Object target;        public WriteCodeProxy(Object target) {        this.target = target;    }        public Object bind(){        return Proxy.newProxyInstance(target.getClass().getClassLoader(), target.getClass().getInterfaces(), this);    }    @Override    public Object invoke(Object proxy, Method method, Object[] args)            throws Throwable {        Object result = null;        System.out.println("write code begin...");        result=method.invoke(target, args);        System.out.println("write code end...");        return result;    }}
public class TestProxy {    public static void main(String[] args) {        WriteCodeProxy proxy = new WriteCodeProxy(new WriteCodeImpl());        WriteCode wc = (WriteCode) proxy.bind();        wc.writeCode();    }}



0 0
原创粉丝点击