动态代理学习笔记

动态代理

在项目运行的时候才创建一个代理对象,对方法进行增强

即对在不改变原代码的情况下在原代码执行的前后增加逻辑

jdk中的Proxy类,前提:实现接口

Object Proxy.newProxyInstance(ClassLoader loader,Class[] interfaces,InvocationHandler h);
参数说明:
	ClassLoader: 将代理类的.class文件加载到内存的类加载器;一般用被代理对象的类加载器
    Class[]: 代理对象需要实现的接口,一般和被代理对象实现的接口一样
    InvocationHandler: 执行处理类,在这里对方法进行加强,是一个接口,所有写参数时需要写入一个实现类,实现类需要实现该方法:
        public Object invoke(Object proxy, Method method, Object[] args)
        参数说明:
			proxy:代理对象
            method:当前执行的方法
            args:当前方法执行的时候所需要的参数
            返回值:就是当前method对象执行的返回值
举例:
Proxy.newProxyInstance(被代理对象.class.getClassLoader(), 被代理对象.class.getInterfaces(), new InvocationHandler() {
            @Override
            public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
                return method.invoke(被代理对象, args);;
            }
        });

动态代理的使用有两种

  1. jdk中Proxy类,前提:实现接口
  2. spring中cglib,前提:继承类
    区别: Proxy至少实现一个接口,cglib至少继承一个类

声明:
有一些博文是看的黑马程序员视频,然后跟着老师做的笔记
Spring是跟子路老师学的
特此感谢,写这些文章的目的是为了自己方便查阅

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值