私が理解できる Spring Bean の高レベルの定義はまだ見つかっていません。Grails のドキュメントや書籍でよく参照されていますが、それらが何であるかを理解することは有益だと思います。春豆とは?それらはどのように使用できますか?それらは依存性注入と関係がありますか?
12 に答える
Spring コア テクノロジーのリファレンス ドキュメントでは、Bean とは何かについて説明しています。
Spring IoC Container and Beansセクションの概要(「IoC」は「制御の反転」を意味します) に従って:
Spring では、アプリケーションのバックボーンを形成し、Spring IoC コンテナーによって管理されるオブジェクトは Bean と呼ばれます。Bean は、Spring IoC コンテナーによってインスタンス化、アセンブル、および管理されるオブジェクトです。それ以外の場合、Bean はアプリケーション内の多くのオブジェクトの 1 つにすぎません。Bean とそれらの間の依存関係は、コンテナーによって使用される構成メタデータに反映されます。
Bean とスコープについては、Bean スコープセクションで説明されています。
Bean 定義を作成するときは、その Bean 定義によって定義されたクラスの実際のインスタンスを作成するためのレシピを作成します。Bean 定義がレシピであるという考えは重要です。これは、クラスと同様に、単一のレシピから多くのオブジェクト インスタンスを作成できることを意味するためです。
特定の Bean 定義から作成されたオブジェクトにプラグインされるさまざまな依存関係と構成値を制御できるだけでなく、特定の Bean 定義から作成されたオブジェクトのスコープも制御できます。Java クラス レベルでオブジェクトのスコープを焼き込むのではなく、構成を通じて作成するオブジェクトのスコープを選択できるため、このアプローチは強力で柔軟です。Bean は、多数のスコープの 1 つにデプロイされるように定義できます。
Spring Bean は、Spring コンテナによって管理される単なるインスタンス オブジェクトです。つまり、フレームワークによって作成および接続され、後で取得できる「オブジェクトのバッグ」(コンテナ) に入れられます。
「配線」部分は、依存性注入のすべてです。つまり、「これが必要です」と言うだけで、フレームワークはいくつかのルールに従って適切なインスタンスを取得します。
Spring に慣れていない人にとっては、ウィキペディアの Spring の記事に適切な説明があると思います。
Spring Framework の中心にあるのは、リフレクションを使用して Java オブジェクトを構成および管理する一貫した手段を提供するコントロール コンテナーの反転です。コンテナーは、特定のオブジェクトのオブジェクト ライフサイクルの管理を担当します。これらのオブジェクトの作成、初期化メソッドの呼び出し、およびこれらのオブジェクトを相互に接続することによる構成です。
コンテナーによって作成されたオブジェクトは、管理対象オブジェクトまたは Beanとも呼ばれます。コンテナーは、XML ファイルをロードするか、構成クラスで特定の Java アノテーションを検出することによって構成できます。これらのデータ ソースには、Bean の作成に必要な情報を提供する Bean 定義が含まれています。
オブジェクトは、依存関係ルックアップまたは 依存関係注入のいずれかによって取得できます。依存関係ルックアップは、呼び出し元がコンテナー オブジェクトに特定の名前または特定の型のオブジェクトを要求するパターンです。依存性注入は、コンテナーがコンストラクター、プロパティ、またはファクトリ メソッドのいずれかを介して、名前でオブジェクトを他のオブジェクトに渡すパターンです。
Spring には Bag of Bean を運ぶ IoC コンテナがあります。作成、維持、削除は Spring Container の責任です。Wiring と Auto Wiring により、Bean を Spring に入れることができます。配線とは手動でXMLファイルに構成することを意味し、「自動配線」とはJavaファイルに注釈を入れることを意味し、Springはルートコンテキストを自動的にスキャンしてJava構成ファイルを作成し、Springのバッグに入れます。
春豆はクラスです。クラスを ( を使用して) インスタンス化する代わりに、アプリケーション コンテキストからクラス タイプへnew
のキャストとしてインスタンスを取得しますbean
。ここで、Bean はアプリケーション コンテキスト構成で構成したものです。このようにして、アプリケーション全体でシングルトン スコープのインスタンスが維持されます。すべての Bean は、アプリケーション コンテキストがインスタンス化された直後に、構成順序に従って初期化されます。アプリケーションで Bean を取得しない場合でも、アプリケーション コンテキストを作成した直後に、すべての Bean インスタンスが既に作成されています。
Spring ブート アプリケーションに関して言えば、Beanはアプリケーションの起動時に Spring フレームワークによって作成される単なる Java オブジェクトです。
オブジェクトの目的は、構成、サービス、データベース接続ファクトリなど、ほとんど何でもかまいません。Spring はあまり気にしません。
ほとんどの Bean は、動作するために他の Bean に依存しています。たとえば、エンティティ マネージャーにはデータベース接続が必要な場合があります。Spring フレームワークは、Bean を自動的に接続する方法を理解できます。アプリケーション開発者の立場から言えば、必要な Bean を宣言するだけで、それらが「魔法のように」アプリケーションに表示され、すぐに使用できるようになります。
Spring では、アプリケーションのバックボーンを形成し、Spring IoC コンテナーによって管理されるオブジェクトは Bean と呼ばれます。Bean は、Spring IoC コンテナーによってインスタンス化、アセンブル、またはその他の方法で管理される単なるオブジェクトです。