2012-03-27 13 views
2

私は春の代理機構としてcglibを使いたいです。問題は、私はコンストラクタによって注入された彼らの依存関係を持ついくつかの豆を持っており、私はこれを変更することはできません。 CGLIBはあまり好きではないようで、私はそのbeanをインスタンス化できません。その周りに何か方法はありますか? (例えば、私はまた、これらのBean CGLIBプロキシを持つことができ、より良いまだいくつかの豆のためにCGLIBプロキシを無効にする?またはことができますか?)CGLIB、Spring、コンストラクタによる注入

Txは、事前には

答えて

7

短い答えは、そのことはできませんプロキシな豆です。 SPR-3150 jiraの問題を参照してください。

+0

明らかに、私たちはcglib 4.0 –

+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)、これはもう問題ではありません。 –

1

ユージーン氏はおそらく彼の答えが正しいと思われるので、adapterまたはdecoratorパターンを継承の代わりに使用して使用する別の方法があります。あなたのデコレータをプロキシし、元のBeanを依存関係として持つようにします。

また、賢明なことを行い、インターフェイスベースのプロキシに切り替えます。

+0

どのくらい正確ですか?コンストラクタインジェクションを使用するクラスのそれぞれに新しいラッパークラスを作成する必要がありますか? @シーパトリックフロイド – Tomer

+0

はい、基本的に。またはインターフェイスベースのプロキシのために行く、それははるかに少ない痛みだ –

+0

私の実際には痛みも..私はその特定の方法(コンストラクタインジェクション)で書かれたサービスを持って、私はそうすることなくプロキシの機能を使用したい私のコードの大規模な変更。私もインターフェイスベースのプロキシに移動することはできません..私は、独自のBeanPostProcessorを作成しようとしていますが、コンストラクタの引数でBeanをプロキシしますが、それは複雑で、よりシンプルなソリューションを探しています。 @Sean Patrick Floyd – Tomer

関連する問題