InvocationHandler实现动态代理

通过InvocationHandler实现动态代理需要被代理类为interface,才可以使用JDK代理。否则就需要使用cglib方式进行动态代理设置。具体使用方式如下:


public class DynamicProxy implements InvocationHandler {
    /** 被代理对象 **/
    private Object obj;

    DynamicProxy (Object obj){
        this.obj = obj;
    }
    
    public static Object newInstance(Object obj){
        return Proxy.newProxyInstance(obj.getClass().getClassLoader(),obj.getClass().getInterfaces(), new DynamicProxy (obj));
    }

    public Object invoke(Object proxy, Method m, Object[] args) throws Throwable {
        try {
            //自定义业务
            ......
            return m.invoke(obj, args);
        }
        catch(InvocationTargetException e) {
            throw e.getTargetException();
        } finally {
            ;
        }
    }
}

使用方式:

public static void main(String[] args){
    Interface interfaceImpl = new InterfaceImpl();   
    Interface interface = (Interface)DynamicProxy.newInstance(interfaceImpl);  
}


你可能感兴趣的:(InvocationHandler实现动态代理)