? ? ? ? 最近在讀特立獨行的貓的小說(你以為的極限只是別人的起點),如果你對她有所了解,就知道她寫的這本也是一本很濃的雞湯的書籍,雖然我們聽過很多道理卻依舊過不好這一生,我覺得偶爾讀讀雞湯,給自己打點雞血還是蠻不錯的體驗。今天讀了一篇文章,推薦一下,論寫作對技術的重要性mp.weixin.qq.com/s/-bXP2jAcz8M1c9-nElOsJA
一、什么是動態代理
動態代理分為jdk動態代理與cglib代理。
jdk動態代理是實現被代理類的接口并繼承proxy類,在運行期生成代理類字節碼文件,并實例化成代理類。它的缺點就是不能代理沒實現接口的類,cglib則解決的是可以代理普通類。
二、什么時候會使用動態代理
當你對已有的類的功能不滿足你的需求的時候,需要增強類的功能,比如加方法調用前后的日志,又或者是aop。
三、怎么使用動態代理
這部分網上很多文章,這里不再累述
四、jdk動態代理為什么只能代理實現接口的
因為運行期生成的字節碼代理類,都是繼承Proxy類,因為java的單繼承性,所以注定了了只能代理接口類。
五、動態代理每次都是生成代理字節碼class,會不會引發方法區內存溢出
? 動態代理內部實現有使用緩存,對已經生成的代理類不會重復創建,并且是用弱引用存放的代理類字節碼和類加載器,垃圾回收器隨時可以回收它。