java动态代理


Java动态代理

前言

学习spring的aop动态代理的时候看老师视频看不懂了,结尾老师建议看不懂就先去复习。

我懒得写笔记了。

package com.example.spring_aop.proxy.jdk;

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

public class ProxyTest {
    public static void main(String[] args) {
       //目标对象
        final Target target=new Target();
       //获得增强对象
        Advice advice=new Advice();

        //参数分别是:1.目标对象加载器2.目标对象相同的接口字节码的对象数组2.InvocationHandler接口
        //代理对象返回的对象实际上是一个系统动态生成的proxy对象,这个对象和“真实对象”之间的关联是“有同样的接口”,而不是“能互相转型”。
               TargetInterface proxy= (TargetInterface) Proxy.newProxyInstance(target.getClass().getClassLoader(), target.getClass().getInterfaces(), new InvocationHandler() {
            @Override
            //调用代理对象的任何方法,实质执行的都是invoke方法
            public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
                //执行目标方法
                // 前置增强
                advice.before();
                Object invoke = method.invoke(target, args);
                //后置增强
                advice.afterReturning();
                return invoke;
            }
        });
       //调用代理对象方法
        proxy.save();
    }
}

文章作者: 郭硕
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 郭硕 !
评论
  目录
>