3

私が理解していることから、Bean に scope="prototype" が指定されている場合、リクエストごとにそのクラスの新しいインスタンスが作成されます。では、単に書くのではなく、Spring を使用して新しいオブジェクトを作成するのはなぜでしょうか。

ClassName newBean = new ClassName();

シングルトンを作成するためにスプリングのみを使用しました。

4

3 に答える 3

5

プロトタイプに他の Bean を注入したい場合があるためです。または、この Bean のメソッドに AOP の側面を適用することもできます。または、トランザクション対応にすることもできます。または安全。

クラスのコンストラクターを呼び出すだけでは、Spring が管理する Bean ではなくなり、Spring が Bean に対して行うことはすべて、手動で構築されたオブジェクトに対して行われません。

于 2012-05-23T10:15:20.150 に答える
2

私が知っている 1 つのケースは、Spring が struts2 の ObjectFactory として使用される場合です。http リクエストごとに新しい Action オブジェクトを作成します。

于 2012-05-23T10:15:23.297 に答える
0

CMOE = 「修正のためにクローズ、拡張のためにオープン」。

ClassName の動作が変更された場合は、ClassName を拡張して、config で新しいクラスのオブジェクトを提供できます。

これには、コードの変更は必要ありません。

これは単純な理由の 1 つです。JB Nizet が言ったことは、より説明的で詳細な ans です。

于 2012-05-23T10:19:20.807 に答える