1

一般に、状態を持たない Bean のみをシングルトンとして選択すると言われています。私はSpringが初めてで、SpringのBeanスコープについて読んでいます。

私の最初の質問は、Bean に関してこの STATE が実際に何を意味するのかということでした。

次に、ステートレス Bean のみでシングルトン スコープを使用することが推奨されるのはなぜですか? スレッドセーフ関連の制限はありますか、それとも他の理由がありますか?

4

3 に答える 3

0

メソッドの呼び出しが、メソッド呼び出しに指定されたパラメーターだけでなく、以前の呼び出しにも依存する場合、オブジェクト (および Bean はオブジェクト) は状態を持ちます。

原則として、インスタンス変数がある場合、状態がある可能性があります。これに対する唯一の例外は、インスタンス (ではないstatic) 変数 (Spring プログラミングでは非常に一般的) に格納されたシングルトンが状態にカウントされないことです。

マルチスレッド環境を使用する場合、シングルトンの状態に副作用が生じる可能性があります。たとえば、あるスレッドが状態を設定し (たとえば、接続を開く)、別のスレッドがこの状態を想定していません。その後、1 つのスレッドが失敗する可能性があります。

于 2013-07-02T07:10:22.750 に答える