Q
具體類的動態代理
13
A
回答
7
爲什麼不使用CGLIB?有關更多信息,請參閱this article。
如果您想代理那些沒有接口的遺留類,該怎麼辦? 您可以使用CGLIB。 CGLIB是一個功能強大,高性能的代碼庫。在封面下,它使用ASM,一個小而快的字節碼處理框架,將現有的字節碼轉換爲 生成新的類。 CGLIB比JDK動態代理方法更快。本質上,它動態生成一個子類,以覆蓋代理類的非最終方法,並將 回調到用戶定義的攔截器。
1
不幸的是,沒有類的API。許多框架正在使用像CGLIB這樣的字節碼生成庫來實現這一點。
1
你可以嘗試其中一個嘲笑類。最簡單的方法可能是分班,你的班級。或者你可以使用AOP來注入你想要的日誌代碼。
0
sun.misc.ProxyGenerator可用於生成代理類,並且不檢查其「接口」是否都是接口。它的generateClassFile方法將字節碼作爲字節數組提供給您,您可以保存該字節碼以鏈接到未來版本或使用第三方工具進行更改。
請注意,如果任何「接口」有最終方法,當您嘗試加載類時會出現錯誤。
相關問題
- 1. 動態創建代理類
- 2. 從具體類生成攔截代理?
- 3. 動態創建一個代理類
- 4. c#動態代理
- 5. 動態編程語言的好處的具體(代碼)示例
- 6. Hibernate如何創建具體類的代理?
- 7. gwt中的動態代理
- 8. 的Java動態代理
- 9. Nginx的動態代理
- 10. Nginx的動態代理
- 11. ELF和處理器動態鏈接的具體方面
- 12. Scala的:使性狀的具體類與具有代表類型
- 13. 動態地從VBA代碼創建宏(具體的UDF)
- 14. 在Anylogic中,如何對具有類型B的代理的類型A的代理進行建模,類型B的代理具有類型C的代理
- 15. 動態代理使用動態/ DLR
- 16. 自動代理類
- 17. python中具體命名的動態類方法
- 18. 具體類具體方法
- 19. 移動具有紋理的身體
- 20. 代理模式具體類隱藏實現細節
- 21. 將一種類型的代理動態投射到另一個代理
- 22. 動態代理 - 創建新代理實例時的類加載器參數
- 23. 動態代理繼承
- 24. Nginx條件動態代理
- 25. 遠程和動態代理
- 26. LinFu動態代理生成
- 27. Mule ESB動態http代理
- 28. Apache代理 - 動態cookie
- 29. 動態代理在phantomjs
- 30. 動態重試代理
http://cglib.sourceforge.net/apidocs/net/sf/cglib/Enhancer.html – eliocs
http://cglib.sourceforge.net/apidocs/net/sf/cglib/MethodInterceptor.html – eliocs
我是新到CGLIB。我的理解是它在內存中生成類二進制文件,但現有的類加載器只是從文件系統加載類,所以它如何使用它自己的類加載器? – Chao