スプリングコンテナ設計の分析

  • j3-liuliang
  • あなた自身の理解とオンラインリソースからの参照に基づいて要約してください。悪い書き込みがある場合は、アドバイスしてください

1.私たちが考えるコンテナ

まず第一に、私たちの最初の反応は、物をロードするために使用できるアイテムを使用してそれを呼び出すことができるということ容器です。そう考えたい場合、このコンテナは物をロードするためにのみ使用でき、目的が多すぎます。実際、Springが考える単一のコンテナは、私たちが考えるコンテナに多くの追加機能を追加します。

以下は、バイドゥ百科事典のコンテナの定義に関する投稿です。

ここに写真の説明を挿入

第二に、Springが考えるコンテナ

Springのコンテナについての私の理解では:

  1. 最も基本的なコンポーネント(一連のBean)をロードするために使用できます
  2. ロードされたものの生死管理(ライフサイクル)
  3. コンポーネントのコンポーネントを組み立てます(属性値、ロード方法)

第三に、コンテナコンセプトの着陸IOC

Springのインターフェースorg.springframework.context.ApplicationContextはIOCコンテナーを表し、上記のBeanのインスタンス化、構成、およびアセンブルを担当します。コンテナは、構成メタデータが作用するオブジェクトを読み取ることにより、その命令が初期化、構成、およびアセンブルできるようにします。構成メタデータは、XML、Javaアノテーション、またはJavaコードで表されます。これにより、アプリケーションレベルを構成するオブジェクトと、これらのオブジェクト間の豊富な依存関係を表現できます。

Springコンテナの継承図を見てみましょう。

ここに写真の説明を挿入

4、IOCそしてDI

4.1 IOC(制御の反転)

以前はユーザーが自分でBオブジェクトを作成して組み立てる必要がありましたが、これらの作成と組み立てはスプリングコンテナに渡されて完了します。ユーザーは、スプリングコンテナで使用する必要のあるオブジェクトを見つけるだけで済みます。このプロセスでは、Bオブジェクトの作成と組み立てのプロセスが逆になりました。以前はユーザーが制御していましたが、現在はスプリングコンテナに渡されて作成と組み立てが行われます。オブジェクトの構築プロセスが逆になっているため、制御の反転と呼ばれます。 IOCは、主にシステムコードの結合度を減らし、システムの保守と拡張を容易にするための、オブジェクト指向プログラミングの設計原則です。

上記は非常に明確である必要があります。つまり、以前使用したオブジェクトは自分でnewに移動する必要があります。Springを使用する場合は、自分でnewに移動する必要はなく、Springコンテナに直接移動して取得する必要があります。適切に構成するだけで済みます。

关联知识:依赖倒置原则(Dependency Inversion Principle )

依存関係の反転原理とは:車を設計するとします。最初にホイールを設計し、次にホイールサイズに従ってシャーシを設計し、次にシャーシに従ってボディを設計し、最後にボディに従って車全体を設計します。これが「依存関係」の関係です。車はボディに依存し、ボディはシャーシに依存し、シャーシはホイールに依存します。

ここに写真の説明を挿入

**上の写真は間違いではないようですが、タイヤのサイズを変更した場合は、サイトを変更し、サイトを変更し、ボディも変更し、車全体の構造を変更し、自動車会社が破産します... **

議長はゼネラルマネージャーに頼って戦い、ゼネラルマネージャーは部長に頼ってお金を稼ぎ、部長は従業員に頼って戦います。従業員が去ったらどうなりますか?

逆に...自動車会社がタイヤを変更することを決定した場合、シャーシ、ボディ、または車のデザインではなく、ホイールのデザインを変更するだけで済みます。

ここに写真の説明を挿入

IOC容器的最最最最核心思想

iocの考え方の中核は、リソースを使用する2つのパーティによって管理されるのではなく、リソースを使用しないサードパーティによって管理されるということです。これにより、多くのメリットがもたらされます。

  1. リソースの集中管理により、構成可能で簡単なリソース管理を実現します。
  2. 結合の程度と呼ばれる、リソースを使用する2つのパーティの依存を減らしました

次の図を参照してください。

ここに写真の説明を挿入

ここに写真の説明を挿入

4.2 DI(依存関係の注入)

依存関係の挿入は、Springコンテナでオブジェクトを作成するときに、依存オブジェクトを設定する方法です。たとえば、Springにリストを指定します。リストには、Bオブジェクトとその他のオブジェクト(タイプBの依存オブジェクトが含まれる場合があります)を作成する必要性がリストされています。 springがBオブジェクトを作成するとき、Bオブジェクトが依存する必要のあるオブジェクトを調べ、依存オブジェクトがリストに含まれているかどうかを確認し、含まれている場合は作成して、Bオブジェクトに渡します。 Bは多くのオブジェクトに依存する必要があるかもしれません。Bを作成する前に、他のオブジェクトが存在するかどうか、他のオブジェクトがどこにあるか、どのように作成されるかを知る必要はありません。スプリングコンテナは、Bに依存するオブジェクトをアクティブに作成し、それらをBに挿入します。たとえば、スプリングコンテナがBを作成する場合、BはAに依存する必要があることがわかり、スプリングコンテナはリスト内のAの定義を見つけて作成し、それをBオブジェクトに挿入します。

実際、これは理解しやすいので、例を挙げましょう!

または上記の家を借りる場合:

まず、住む家を見つけて、リクエストします。

  1. 安い値段
  2. 便利な交通機関
  3. キッチンとは独立
  4. 家具付き
  5. 带网线通网

これらの要件を仲介者に渡す

次に、これらの要件に従って中間検索(春は定義に従って対応するインスタンスを作成することです)そのような家

すると、この家に通网(依赖)は仲介人が必要だとわかり、関係する営業所に連絡しました。

すべての要件が満たされると、家はテナントに渡され、顧客の賃貸プロセスが完了します。

テナントの5番目の要件は、依存関係の注入が必要な仲介者が、関連するビジネスホールを通じてテナントの要件を完了する必要があることです。

ここに写真の説明を挿入

結びの言葉

  • ブロガーはあまり知識がないので、必然的に間違いがあります。間違いや偏見を見つけたら、メッセージを残して指摘してください。訂正させていただきます。
  • 記事が悪くないと思うなら、転送、共有、いいね、コメントはあなたの最大の励ましです。
  • 読んでいただきありがとうございます、ようこそ、そしてご清聴ありがとうございました。

ここに写真の説明を挿入

おすすめ

転載: blog.csdn.net/qq_40399646/article/details/108722025