天天看點

jdk代理測試類

//建立目标對象

        final Target target = new Target();

        //增強對象

        final Advice advice = new Advice();

        TargetInterface proxy = (TargetInterface) Proxy.newProxyInstance(

                target.getClass().getClassLoader(),//目标對象類加載器

                target.getClass().getInterfaces(),//目标相同的接口位元組碼對象數組

                new InvocationHandler() {

                    //調用代理對象的任何方法,實質執行的都是invoke方法

                    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {

                        //前置增強

                        advice.before();

                        Object invoke = method.invoke(target, args);

                        //後置增強

                        advice.after();

                        return invoke;

                    }

                }

        );

        //調用代理對象的方法

        proxy.save();