阅读背景:

JDK动态代理和CGLIB动态代理编码

来源:互联网 

JDK动态代理【接口】:

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;

/**
 * JDK动态代理接口
 */
public class DynamicProxy implements InvocationHandler {
    private Object target;
    public DynamicProxy(Object target) {
        this.target = target;
    }

    public <T> T getProxy() {
        return (T) Proxy.newProxyInstance(target.getClass().getClassLoader(), target.getClass().getInterfaces(), this);
    }
    @Override
    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
        before();
        Object result = method.invoke(target, args);
        after();
        return result;
    }

    private void after() {
        System.out.println("after");
    }

    private void before() {
        System.out.println("before");
    }

    public static void main(String[] args) {
        DynamicProxy dynamicProxy = new DynamicProxy(new HelloImpl());
        ((Hello)dynamicProxy.getProxy()).say();
    }
}

interface Hello {
    String say();
}

class HelloImpl implements Hello {
    @Override
    public String say() {
        System.out.println("say");
        return "say";
    }
}import java.lang.reflect.Invocati



你的当前访问异常,请进行认证后继续阅读剩余内容。

分享到: