java动态代理思考

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

一、什么是动态代理

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

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

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

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

三、怎么使用动态代理

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

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

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


java动态代理思考_第1张图片

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

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

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

你可能感兴趣的:(java动态代理思考)