Spring Framework がデフォルトでシングルトンのインスタンスを返すように設計されている理由の決定がわかりません。そのため、アプリケーション コンテキストを呼び出すときに同じオブジェクトが渡されます。この方法で Bean の初期化を処理するという Spring の決定に影響を与えたいくつかの理由は何ですか? すべての Bean がプロトタイプとして初期化された場合に起こりうる悪いことは何ですか?
前もって感謝します。
Spring Framework がデフォルトでシングルトンのインスタンスを返すように設計されている理由の決定がわかりません。そのため、アプリケーション コンテキストを呼び出すときに同じオブジェクトが渡されます。この方法で Bean の初期化を処理するという Spring の決定に影響を与えたいくつかの理由は何ですか? すべての Bean がプロトタイプとして初期化された場合に起こりうる悪いことは何ですか?
前もって感謝します。
Spring のドキュメントはこの点を非常によく説明していると思います。その理由は、Bean がステートレスである場合、複数のインスタンスは必要ないからです。ほとんどの Bean はステートレスであるため、「シングルトン」がデフォルトのスコープです。ただし、これは変更できます。セッション、リクエストなど、他のスコープがあります。
たとえば、Web ストアを実装していて、短い実装が必要な場合は、セッション スコープが必要です。ただし、リクエストごとに個別に送信される特別なパラメータをサポートしている場合は、おそらくこの目的でリクエスト スコープを使用することをお勧めします。
ただし、データベースにアクセスし、認証を実行し、電子メールまたは SMS を送信し、他のビジネス ロジックを実行する Bean は、シングルトン スコープを使用して実装できますし、実装する必要があります。