スプリングフレームワークIOC及び依存反転制御詳細注射DI

この記事では、コントロールIOC Springフレームワークと依存性注入DIの反転を説明し、読んで一緒に学び、一緒に進行することを歓迎します。

春Frameworkリファレンス基礎綿密な調査の春の基礎



I.はじめにエントリー手続きとIOC

  • 依赖注入或控制反转的定义中,调用者不负责被调用者的实例创建工作呼び出し側の注入後に作成するために、開発者がインスタンス型の構成を決定するのSpring Frameworkのコンテナそれによって責任を負うことに努めています。
  • Springコンテナので被呼インスタンスを担当し、そのインスタンスのインスタンスを作成するため、名前を発信者を注入するための責任があります依赖注入
  • もはやスプリングによって作成されるが、発呼者によって作成され、呼び出し元の実施例を作成し、制御は、容器の外側にアプリケーションコードから転送され、制御の逆転は、その名が発生しました控制反转

ここに画像を挿入説明


コントロールの二.IOC-反転

  • IOC是 Inverse of Control 的简写,意思是控制反转それは、デザインのオブジェクト間の結合を低減することです。
  • IOCすることにより、開発者はSpringコンテナを完了するには、オブジェクトを作成するプロセスを心配する必要はありません。具体的には春・プログラムは、構成ファイル、反射機構によって作成されたオブジェクトのインスタンスを作成した取得Beanへのオブジェクトのニーズを読み取り、処理します。
  • 短所:オブジェクトが反射機構によってインスタンス化されるので、システムのパフォーマンスに一定の影響を与えています。
  • 利点:
  • 内存控制:管理対象オブジェクト統一、混乱を避けるために、オブジェクトが追加のメモリオーバーヘッドで結果を作成しました。メモリの最適化を容易にします。
  • 降低耦合度:スケーラブルなプロジェクト、簡単に維持します。次のIoC +インタフェースの場合ならば、任意の実装クラスは、コンパイルエラーが発生することはありません削除します。特定のエラーコードを取得するために実行しているが、コードは問題がありませんが-----側から他にも緩く使用中の結合を反映しています。

ここでは簡単な例です:あなたは、アパートを借りるテナントあり、IOCは、住宅会社に相当し、彼は家のすべてを管理するための責任があった、彼はあなたにすべての情報のリストを与え、すでにあなたが探している登録されたオブジェクト。何が必要場合は、何を提供します。

ここに画像を挿入説明


三.DI-依存性注入

  • Dependency Injection,说的是创建对象实例时,同时为这个对象注入它所依赖的属性。コンテナ管理の豆と豆のそれぞれとの間の関係に相当しますそして、このコンテナは春です。
  • 例えば:私たちは通常の場合には、ダオ層サービス注入層を依存し、注入層の例サービスコントローラ層。

ここに画像を挿入説明


四。IOCおよびDI

  • IOCは終わりで、その後、制御の反転であるため、IOCの別名は、2004年に、Martin Fowler氏は「それのコントロールを反転しているもの?」を詳細に分析し、フィージビリティスタディの後で、同じ問題を論じて、彼はに来ました答え:获得依赖对象的过程被反转了"" 制御は、オブジェクトによって管理されるそれらの依存オブジェクトを取得するプロセスで反転された後にアクティブ噴射IOCコンテナとなります。彼は「制御の反転」ので、より適切な名前は、「依存性注入(依存性注入、DI)」で取りました。他的这个答案,实际上给出了实现IOC的方法:注入。
  • 動作中にIoCコンテナによって、いわゆる依存性注入、特定のオブジェクトに注入ダイナミック依存性。
  • したがって、依存性注入(DI)及び逆方向制御(IOC)は、異なる角度から同じことを記述し、それは、注入依存性の方法によってIOCコンテナによって導入を意味オブジェクト間のデカップリング

ファイブ.Springフレームワークの使用(IOC)

  • JavaBeansを作成します。1.
  • 2. JavaBeanの構成はSpringコンテナに管理されます
<bean id="book" class="com.it.spring.beans.Book">
    <property name="bookId" value="1"/>
    <property name="bookName" value="Java程序设计"/>
    <property name="bookPrice" value="20.20"/>
    <property name="publishTime">
        <bean class="java.util.Date"/>
    </property>
</bean>
  • 3.初期化Springコンテナ
  • 春はコアプロファイルをロードapplicationContext.xmlを
ClassPathXmlApplicationContext context =    new ClassPathXmlApplicationContext("applicationContext.xml");
  • 4.取得オブジェクトSpringコンテナ
Book book = (Book)context.getBean("book");

  • 春のIoCの原則
  • ①春はClassPathXmlApplicationContextクラスで最初のコア・コンフィギュレーション・ファイルをロード
  • applicationContext.xmlを、豆の設定情報を解析②コア構成ファイル
  • 私たちは、コンテナからオブジェクトを取得する場合③、コンテナののSpring Bean IDは下の反射技術と完全な注入性によってオブジェクトを作成します

VI。3つの方法で、注射の種類

  • ①set方法
  • 注入性タグ属性値の完了により、実際に対応するプロパティセットメソッドを呼び出しています
  • プロパティを注入すると、単純な値の型は、文字列を直接value属性で指定することができます
  • オブジェクトの2種類があります方法を注入することができます
<property id="..." name="objAttr">
    <bean class="package.Class"/>
</property>
<bean id="objRef" class="package.Class"/>
<property id="..." name="objAttr" ref="objRef"></property>
  • ②コンストラクタ
  • それはコンストラクタである(パラメータの順序は、インデックスindex = 0,1によって決定されてもよいです)
<bean id="book3" class="com.it.spring.beans.Book">
    <constructor‐arg>
        <value>3</value>
    </constructor‐arg>
    <constructor‐arg value="phython程序设计"/>
    <constructor‐arg value="44.44" />
    <constructor‐arg ref="date"></constructor‐arg>
</bean>
  • 何index属性が存在しない場合、すべてのパラメータは、クラスのコンストラクタのパラメータの順序と一致している必要があり、index属性によって秩序パラメータを指定するように構成することができます。
  • ③インターフェース注入

  • The best investment for young people is to invest in yourself
    ここに画像を挿入説明
  • 2020.03.25 来自辰兮的第36篇博客
公開された40元の記事 ウォンの賞賛182 ・は 40000 +を見て

おすすめ

転載: blog.csdn.net/weixin_45393094/article/details/105095982