0

これは以前に何百回も尋ねられたと確信していますが、質問が見つからないようですので、他のスタックオーバーフローの回答を参照してください。

ほとんどの Spring ユーザーは、注入が必要な非シングルトン Bean であるオブジェクトに対して何をしますか? たとえば、毎回新しいインスタンスを作成したい Customer のようなクラスがあります。それがエンティティであり、 @PreRemove または他の場所で反復するリスナーを注入したいとしましょう。通常の解決策は @Configurable を使用することですが、それはほとんど回避策のようであり、これらを処理するためのより標準的な方法があるかどうか疑問に思いました。

私が考えることができる唯一のことは、マネージ Bean である CustomerRepository クラスにファクトリ newCustomer インスタンス メソッドを作成することです。次に、リスナーを Customer (最も自然な場所) に注入する代わりに、CustomerRepository に注入し、Customer ala new Customer( inspectedListeners ) への明示的なコンストラクター引数として指定します。

人々は Configurable を使用する傾向がありますか、それとも非シングルトン インスタンスを注入するためのより良い方法はありますか? それとも、ほとんどのユーザーは上記のようにファクトリ メソッドを作成しますか? エンティティの例は単なる例です。シングルトンではない他のオブジェクトがあり、通常は新しいものですが、注入が必要です。

これは、Guice のようなものでは別の方法で処理されますか? JSR-330 機能を使用するだけで、どのようにそれを行うでしょうか?

4

1 に答える 1

0

必要に応じて、Bean を非シングルトンにすることもできます。XML に問題がないかどうかによって異なります。

<bean id="beanA" class="misc.BeanClass" scope="prototype">
    <property ... />
</bean>

これにより、毎回新しいインスタンスが提供されます。各インスタンスは、注入された値で初期化されます。

この注釈も使用できます。

@Scope("prototype")
于 2013-08-02T20:24:39.367 に答える