この記事では、主に、次のように、豆の範囲とライフサイクルに関する関連コンテンツについて説明します。
豆の範囲
Spring 3は、Beanの5つのスコープ、すなわちSingleton(Singleton)、Prototype(Prototype)、Request、Session、Global Sessionを定義します。 5つのスコープについては、次のように説明されています。
1.シングルトン:シングルトンモード、スプリングIOCコンテナには1つの共有ビーンインスタンスのみがあります。豆の数がそれを参照しても、常に同じオブジェクトを指しています。 Singletonスコープは、春のデフォルトスコープです。また、豆をシングルトンモードとして定義し、次のように設定することもできます。
<bean id="userDao" scope="singleton"/>
2.プロトタイプ:プロトタイプモード。プロトタイプが定義されたBeanがスプリングコンテナを介して取得されるたびに、コンテナは新しいBeanインスタンスを作成します。各Beanインスタンスには独自の属性と状態があり、Singletonにはグローバルコンテキストに1つのオブジェクトしかありません。経験則として、ステートフェルビーンズのプロトタイプ範囲を使用し、シングルトンの範囲を無国籍豆に使用してください。
3. Request:HTTPリクエストでは、コンテナはBeanの同じインスタンスを返します。ただし、さまざまなHTTP要求に対して新しいBeanが生成され、Beanは現在のHTTP要求内でのみ有効です。
<bean id="loginAction" scope="request"/> 、http要求ごとに、スプリングコンテナはBeanの定義に従って新しいインスタンスを作成し、インスタンスは現在のHTTPリクエスト内でのみ有効であり、他のリクエストは現在のリクエストのステータスの変更を確認できません。現在のHTTP要求が終了すると、Beanインスタンスも破壊されます。
4.セッション:HTTPセッションでは、コンテナはBeanの同じインスタンスを返します。さまざまなセッションリクエストの場合、新しいインスタンスが作成され、Beanインスタンスは現在のセッション内でのみ有効です。
<bean id="userPreference" scope="session"/> 、httpリクエストと同じ、すべてのセッションリクエストを作成する新しいインスタンスを作成すると、異なるインスタンス間で属性が共有されず、インスタンスは独自のセッションリクエスト内でのみ有効です。リクエストが終了すると、インスタンスが破壊されます。
5. Globalセッション:グローバルHTTPセッションでは、コンテナはBeanの同じインスタンスを返します。これは、ポートレットコンテキストを使用する場合にのみ有効です。
豆のライフサイクル
上記のように豆の範囲の導入後、豆のライフサイクルは豆の範囲に基づいて説明されます。
スプリングコンテナは、シングルトンスコープの下で豆のライフサイクルを管理できます。この範囲では、Springは、Beanがいつ作成されるか、初期化が完了したとき、そしてそれがいつ破壊されるかを正確に知ることができます。プロトタイプスコープ豆の場合、春はそれらの作成のみを担当します。コンテナがBeanのインスタンスを作成すると、Beanのインスタンスがクライアントのコード管理に引き渡されます。スプリングコンテナは、そのライフサイクルを追跡せず、プロトタイプスコープとして構成された豆のライフサイクルを管理しません。春の豆のライフサイクルの実行は非常に複雑なプロセスであり、読者はSpringが提供する方法を使用してBeanの作成プロセスをカスタマイズできます。スプリングコンテナは、Beanインスタンスを使用できるようにする前に、多くの作業を行っています。
要約します
上記は、春の豆の範囲とライフサイクルについて議論するこの記事に関するすべてです。私はそれが誰にでも役立つことを願っています。興味のある友人は、このサイトの他の関連トピックを引き続き参照できます。欠点がある場合は、それを指摘するためにメッセージを残してください。このサイトへのご支援をありがとうございました!