[Spring テクノロジー] Spring アーキテクチャ
[Spring テクノロジー] Spring IOC および DI エントリーケース
[Spring テクノロジー] Spring Bean の構成と例
[Spring テクノロジー] Spring 依存関係インジェクション (DI 構成)
[Spring テクノロジー] Spring サードパーティのリソース構成管理
[Spring テクノロジー] ] Spring Container Technology
[Spring Technology] Spring アノテーション開発
[Spring Technology] Spring Integration Mybatis&Junit 単体テスト
[Spring Technology] Spring AOP
[Spring Technology] Spring トランザクション管理
Spring依存性注入
1. 依存性注入の方法【ポイント】
問題のインポート
依存性注入の方法は何通りありますか?
1.1 依存性注入の 2 つの方法
- セッターインジェクション
簡易タイプ
参照型 (非常に一般的) - コンストラクタインジェクション
単純型
参照型
1.2 セッターインジェクション
問題のインポート
セッター注入にはどのサブタグが使用されますか?
参照型
シンプルタイプ
1.3 工法注入
問題のインポート
コンストラクターインジェクションはどのサブタグを使用しますか?
参照型
シンプルタイプ
パラメータ適応 [理解]
1.4 依存性注入方法の選択
- 必須の依存関係はコンストラクターを使用して実行され、セッターインジェクションを使用するとインジェクションが実行されず、null オブジェクトが生成される可能性があります。
- オプションの依存関係では、柔軟性を高めるためにセッター インジェクションを使用します
- Spring フレームワークはコンストラクターの使用を推奨しており、ほとんどのサードパーティ フレームワークはデータ初期化に比較的厳密なコンストラクター インジェクションの形式を使用しています。
- 必要に応じて、両方を同時に使用できます。コンストラクター注入を使用して必須の依存関係の注入を完了し、セッター注入を使用してオプションの依存関係の注入を完了します。
- 実際の開発では実態に応じて解析する必要があり、制御オブジェクトがセッターメソッドを提供していない場合にはコンストラクターインジェクションを使用する必要があります。
- 自社開発モジュールはセッターインジェクションを使用することをお勧めします
2. 自動アセンブリに依存する [理解]
問題のインポート
タイプ別に自動配線を設定するにはどうすればよいですか?
2.1 自動組立の概念
- IoC コンテナが、Bean が依存するリソースに応じて Bean を自動的に見つけてコンテナに注入するプロセスを自動アセンブリと呼びます。
- 自動組立方式
種類別(よく使われる)
名前別、自動配線なしの
コンストラクター別
2.2 自動組立式
依存関係の自動配線
構成内で Bean タグの autowire 属性を使用して、自動配線のタイプを設定します。
<bean id="bookDao" class="com.itheima.dao.impl.BookDaoImpl"/>
<bean id="bookService" class="com.itheima.service.impl.BookServiceImpl" autowire="byType"/>
自動配線機能に依存
- オートワイヤリングは参照型の依存性注入に使用され、単純な型では操作できません。
- タイプ別アセンブリ (byType) を使用する場合、コンテナ内の同じタイプの Bean が一意であることが保証される必要があり、使用することをお勧めします。
- 名前によるアセンブリ (byName) を使用する場合、コンテナー内で指定された名前を持つ Bean が保証される必要があります。変数名は構成に関連付けられているため、お勧めできません。
- 自動アセンブルの優先度はセッターインジェクションやコンストラクタインジェクションよりも低く、同時に発生すると自動アセンブルの設定は失敗します。
3. コレクションの注入
3.1 配列型データの注入
<property name="array">
<array>
<value>100</value>
<value>200</value>
<value>300</value>
</array>
</property>
3.2 リスト型データの注入
<property name="list">
<list>
<value>itcast</value>
<value>itheima</value>
<value>boxuegu</value>
<value>chuanzhihui</value>
</list>
</property>
3.3 セット型データの注入
<property name="set">
<set>
<value>itcast</value>
<value>itheima</value>
<value>boxuegu</value>
<value>boxuegu</value>
</set>
</property>
3.4 マップ型データの注入
<property name="map">
<map>
<entry key="country" value="china"/>
<entry key="province" value="henan"/>
<entry key="city" value="kaifeng"/>
</map>
</property>
3.5 プロパティ型データの挿入
<property name="properties">
<props>
<prop key="country">china</prop>
<prop key="province">henan</prop>
<prop key="city">kaifeng</prop>
</props>
</property>
注: プロパティ タグはセッター インジェクションを示し、コンストラクター インジェクションのconstructor-arg タグは <array>、<list>、<set>、<map>、<props> タグを記述することもできます。