jdk动态代理

发布时间 2023-03-29 14:35:27作者: 策码奔腾
public class PlusHandler implements InvocationHandler {

    private Object o;

    public PlusHandler(Object o){
        this.o = o;
    }

    @Override
    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
        System.out.println("args..."+args[0]+" "+args[1]);
        Object result = method.invoke(o,args);
        System.out.println("result..."+result);
        return result;
    }

    public interface IService{
        int add(int a, int b);
    }

    public static class IServiceImpl implements IService{
        @Override
        public int add(int a, int b){
            return a+b;
        }
    }

    public static void main(String[] args) {
        IService target = new IServiceImpl();
        PlusHandler handler = new PlusHandler(target);
        IService proxy = (IService)Proxy.newProxyInstance(target.getClass().getClassLoader(), target.getClass().getInterfaces(), handler);
        proxy.add(1,2);
    }
}

springboot2.0以后AOP默认为Cglib代理,jdk代理需要手动设置。