一篇文章洞悉java动态代理

    最近在读特立独行的猫的小说(你以为的极限只是别人的起点),如果你对她有所了解,就知道她写的这本也是一本很浓的鸡汤的书籍,虽然我们听过很多道理却依旧过不好这一生,我觉得偶尔读读鸡汤,给自己打点鸡血还是蛮不错的体验。今天读了一篇文章,推荐一下,论写作对技术的重要性mp.weixin.qq.com/s/-bXP2jAcz8M1c9-nElOsJA

一、什么是动态代理

动态代理分为jdk动态代理与cglib代理。

jdk动态代理是实现被代理类的接口并继承proxy类,在运行期生成代理类字节码文件,并实例化成代理类。它的缺点就是不能代理没实现接口的类,cglib则解决的是可以代理普通类。

二、什么时候会使用动态代理

当你对已有的类的功能不满足你的需求的时候,需要增强类的功能,比如加方法调用前后的日志,又或者是aop。

三、怎么使用动态代理

这部分网上很多文章,这里不再累述

四、jdk动态代理为什么只能代理实现接口的

因为运行期生成的字节码代理类,都是继承Proxy类,因为java的单继承性,所以注定了了只能代理接口类。


五、动态代理每次都是生成代理字节码class,会不会引发方法区内存溢出

  动态代理内部实现有使用缓存,对已经生成的代理类不会重复创建,并且是用弱引用存放的代理类字节码和类加载器,垃圾回收器随时可以回收它。

参考www.jianshu.com/p/77dfeccac85d

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值