JDK动态代理

来源:互联网 发布:解剖软件 编辑:程序博客网 时间:2024/06/06 14:27

1.接口Hello

public interface Hello {    void say(String name);}

2.Hello实现类

public class HelloImpl implements Hello{    @Override    public void say(String name) {        System.out.println("Hello"+name);    }}

3.动态代理类

public class DynamicProxy implements InvocationHandler{    private Object target;    public DynamicProxy(Object target) {        this.target = target;    }    @Override    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {        before();        Object result = method.invoke(target, args);        after();            return result;    }    @SuppressWarnings("unchecked")    public <T> T getProxy(){        return (T) Proxy.newProxyInstance(                target.getClass().getClassLoader(),                 target.getClass().getInterfaces(),                 this);    }    private void before() {        System.out.println("before");    }    private void after() {        System.out.println("after");    }}

4.main

public class Main {    public static void main(String[] args) {        Hello hello = new HelloImpl();        hello = new DynamicProxy(hello).getProxy();        hello.say("ke");    }}

参考《架构探险 从零开始写Java Web框架》

原创粉丝点击