2012-03-27 171 views
2

我想使用cglib作爲spring的代理機制。問題是,我有一些bean的構造函數注入了它們的依賴關係,我無法改變它。 CGLIB似乎並不那麼喜歡,並且不會讓我實例化這個bean。有沒有辦法解決它? (例如,我可以禁用使用CGLIB一些豆子?或更好,但我可以有CGLIB代理的豆也?)CGLIB,彈簧和注入構造函數

的Tx提前

回答

7

一個簡短的答案是,你不能代理豆類等。請參閱SPR-3150 jira問題。

+0

顯然,我們可以期待在cglib 4.0 – 2013-12-27 15:33:36

+0

根據[評論由Juergen Hoeller在SPR-3150](https://jira.spring.io/browse/SPR-3150?focusedCommentId=96487&page=com .atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-96487),使用Spring 4.0,這不再是一個問題。 – 2014-03-17 14:29:16

1

由於尤金對他的簡短回答可能是正確的,另一種方法是使用adapterdecorator模式,使用組合而不是繼承。代理你的裝飾器,讓它擁有原始的bean作爲依賴。

或者做明智的事情,切換到基於接口的代理。

+0

究竟如何?我應該爲使用構造函數注入的每個類創建一個新的包裝類? @Sean Patrick Floyd – Tomer 2013-08-15 14:32:55

+0

是的,基本上。或去基於接口的代理,這是少得多的痛苦 – 2013-08-15 15:26:13

+0

在我的這實際上也是一種痛苦也..我有一個服務是以特定的方式編寫的(構造函數注入),我想使用代理的功能,而沒有這樣做我的代碼發生了巨大的變化。我不能移動到基於接口的代理也..我試圖創建自己的BeanPostProcessor,將用構造函數參數代理bean,但它有點複雜,我正在尋找一個更簡單的解決方案..: - | @Sean Patrick Floyd – Tomer 2013-08-15 18:18:48