天天看點

代理模式之 cglib

在 玩轉JAVA代理模式 一文中,我們介紹了代理模式的基本概念 和 使用 jdk 實作步驟。這一篇文章我将帶大家來使用 cglib 實作動态代理。

cglib 是第三方提供的包,是以需要引入jar包坐标:Project Structure…->Libraries->+For Maven->輸入:cglib:cglib:3.2.2下載下傳結束後可以使用

代理模式之 cglib

出現警告是因為版本過高,使用cglib:cglib:2.2.2或以下即可。

我們都知道,使用 jdk 實作動态代理的時候我們是有條件的,那就是這個代理目标得有接口。 然而,cglib 就很好的解決了這個問題,它可以代理沒有接口的類,這樣就彌補了 JDK 的不足。

 代碼示範

張三 類
媒婆代理 類
測試 類

效果展示

 從上面的代碼中我們可以看到,cglib 的代理并不需要接口。

原理對比

jdk代理:需要接口,是對接口的繼承,這就導緻了代理對象隻能調用接口中存在的方法。

cglib代理:給一個類 Class 即可,是對類的繼承,繼承其所有方法來産生子類,好處就是代理對象能夠調用這個 Class 的所有方法。