Looking for spring Answers? Try Ask4KnowledgeBase
Looking for spring Keywords? Try Ask4Keywords

spring依存性注入(DI)および制御反転(IoC)


備考

大規模なソフトウェアアプリケーションのソースコードは、通常、複数のユニットに編成されています。ユニットの定義は、通常、使用されるプログラミング言語によって異なります。例えば、手続き型プログラミング言語(Cのような)で書かれたコードは、 functionsまたはprocedures編成される。同様に、オブジェクト指向プログラミング言語(Java、Scala、C#など)のコードは、 classesinterfacesなどに編成されていclasses 。これらのコード構成単位は、ソフトウェアアプリケーション全体を構成する個々の単位と考えることができます。

アプリケーションが複数のユニットを持つ場合、それらのユニット間の依存関係は、あるユニットが他のユニットを使用してその機能を完了しなければならない場合に発生します。依存単位は、 consumersと、特定の機能のprovidersとして依存する単位と考えることができます。

最も簡単なプログラミングアプローチは、アプリケーションの全体的な実行のどの時点でどのプロバイダをインスタンス化し、使用し、破壊するかを決定することによって、消費者がソフトウェアアプリケーションのフローを完全に制御することです。消費者は、消費者のdependenciesである実行フロー中にプロバイダを完全に制御できると言われています。プロバイダが独自の依存関係を持っている場合、消費者はプロバイダをどのように初期化(および解放)するべきかを心配する必要があり、ソフトウェアのユニット数が増えるにつれて制御フローがますます複雑になります。このアプローチはまた、ユニット間のカップリングも増加させるため、ソフトウェアの他の部分を破壊することを心配することなくユニットを個別に変更することがますます困難になっています。

Inversion of Control (IoC)は、単位発見、インスタンス化、破壊などの制御フローアクティビティを消費者やプロバイダとは独立したフレームワークにアウトソーシングすることを提唱する設計原理です。 IoCの基本原則は、消費者とプロバイダを切り離し、ソフトウェア部門が依存関係の発見、インスタンス化、クリーンアップを心配する必要がなくなり、ユニットがそれぞれの機能に集中できるようにすることです。このデカップリングは、ソフトウェアの拡張性と保守性を維持するのに役立ちます。

依存性注入は、依存性(プロバイダ)のインスタンスが、消費者がそれらを見つけてインスタンス化する代わりに、ソフトウェアユニット(消費者)に注入される制御原理の逆転を実装する技術の1つである。

Springフレームワークには、Spring管理されたBeanを依存関係として他のSpring管理Beanに注入できるようにする、そのコアに依存性注入モジュールが含まれています。

依存性注入(DI)および制御反転(IoC) 関連する例