Spring コアコンポーネント
Spring には多くのコアコンポーネントがありますが、そのスケルトンは Core、Context、Bean です。
Bean
3つの中で、Beanは核中の核です。 Bean は構成ファイルを通じてオブジェクトを実装し、Spring はオブジェクトのストレージ領域とライフサイクルの割り当てを管理します。依存関係注入を通じて、オブジェクトを指定されたビジネス ロジック クラスに注入できます。これらの注入関係は Ioc コンテナによって管理されます。
したがって、Spring の核となる考え方は、BOP (Bean Oriented Programming)、つまり Bean 指向プログラミングと呼ばれることがあります。
BeanコンポーネントはSpringの org.springframework.beans パッケージで定義されており、次の問題を解決します:
Beanの定義
Beanの作成
Beanの解析
ユーザーはBeanの作成にのみ注意する必要があります。 other どちらのプロセスも Spring によって内部的に完了します。
1. 全体的なアーキテクチャ
Spring Bean の全体的なアーキテクチャは典型的なファクトリ モデルであり、最上位のインターフェイスは BeanFactory です。 ListableBeanFactory、HierarchicalBeanFactory、および AutowireCapableBean は、Spring の内部オブジェクト処理と変換のデータ制限を区別するためのサブクラスです。
ListableBeanFactory: これらの Bean がリスト可能であることを示します
HierarchicalBeanFactory: これらの Bean に継承関係があることを示します
AutowireCapableBeanFactory: Bean の自動アセンブリ規則を定義します
これらのインターフェイスは、それぞれ Bean コレクション、Bean 関係、および Bean 関係を定義します。
2.Bean定義
Bean定義は主にBeanDefinitionで記述され、階層関係は以下の通りです:
Springの設定ファイルで定義されたノードは、解析が成功した後、その後のすべての操作が完了するとBeanDefinitionオブジェクトに変換されます。 BeanDefinition オブジェクトで実行されます。
3.Bean 解析
Bean 解析の主なタスクは、Spring 構成ファイルを解析し、最終的に BeanDefinition オブジェクトを生成することです。
解析プロセスは非常に複雑で、構成ファイル内のすべてのタグが含まれます。主な参加クラスは次のとおりです。
Context
Beanはオブジェクトをラップし、オブジェクトはビジネスに必要なデータを格納します。したがって、これらのデータとそれらの間の関係の存続および動作環境をどのように提供するか (つまり、オブジェクトの状態を保存するか) が、Context が解決する必要がある問題です。コンテキストは実際には Bean 関係のコレクションであり、Ioc コンテナとも呼ばれます。
ApplicationContext は、Context の最上位インターフェースです。階層関係は次のとおりです。
ApplicationContext は、アプリケーション環境の基本情報を識別できます。 Context の機能を拡張するために 5 つのインターフェースを継承します。そのうち BeanFactory は Bean の作成に使用され、外部リソースにアクセスするための ResourceLoader インターフェースを継承します。
ApplicationContext のサブクラスには主に以下が含まれます:
ConfigurableApplicationContext: ユーザーが情報を動的に構成および変更できるコンテキスト。その中で、AbstractRefreshableApplicationContext が最もよく使用されます。
WebApplicationContext:
ServletContext に直接アクセスできる Web アプリケーション用に用意されたコンテキスト。
要するに、ApplicationContext が完了しなければならない機能は次のとおりです:
アプリケーション環境を識別する
BeanFactory を使用して Bean オブジェクトを作成する
オブジェクト関係テーブルを保存する
さまざまなイベントをキャプチャする
Ioc コンテナとして、Context は責任を負いますSpring Base の他のほとんどの機能に使用します。
Core
Spring は、Core と呼ばれる Bean 間の関係を検出、確立、維持するためのツールのパッケージです。これは実際に必要なユーティリティです。
コアの重要なコンポーネントの 1 つはリソースです。
1. リソースの全体的なレベル
リソースは主にリソースへのアクセス方法を定義します。すべてのリソースはリソース インターフェイスに抽象化されます。階層関係は次のとおりです。
リソースのパッケージ化。リソースは、InputStreamSource インターフェイスを上方に継承し、すべてのリソースは、InputStream を通じて取得されるため、リソース プロバイダーが保護されます。
リソースの読み込み中。 Resource の下の ResourceLoader インターフェイスでは、すべてのリソース ローダーは、以前の ApplicationContext など、このインターフェイスを均一に実装することで、すべてのリソースをロードできます。
2. Context との関係を確立する
図に示すように、ApplicationContext は ResourcePatternResolver インターフェイスを通じて ResourceLoader と対話し、リソースを読み込み、解析し、記述します。 ResourcePatternResolver は、他のコンポーネントによる使用を容易にするためにリソースをカプセル化および統合します。
概要
この記事では、Spring スケルトン フレームワークを構成する 3 つのコア コンポーネントとそれらの間の接続、および 3 つの実装原則を理解するための洞察を主に要約します。