私たちは、XML設定ファイルの属性を参照してください
1での<bean>以下の属性]タブがあります
-id
-クラス
IDは:コンテナ・ビーン、一意のIDを特定します。
私たちは、プログラムがidで対応するBeanを識別することである知っています。
クラス:豆の完全なクラス名と反射の仕方によってBeanコンテナIOCを作成するには、存在または不在豆の引数のコンストラクタであることが必要です。
私たちは、XML設定ファイルは、クラスがパッケージ名+クラスのクラス名があるとき、それは反射機構を使用してクラスを作成することであることを知っています。
私たちのクラスのコンストラクタには、引数ではないではない場合は、コンストラクタを求められません
ノーコンストラクタた場合は、引数なしのデフォルトコンストラクタを呼び出します。
2.IOCコンテナ
IOCのコンテナに代わってのApplicationContext、春は達成するためにIOCコンテナの2つの基本的な種類を提供します。
-BeanFactory:基本的にIOCのコンテナ
-ApplicationContext:より高度な機能を提供するために、インターフェースはたBeanFactoryの子です。
違い:
自分自身のためのBeanFactotyインフラSpringフレームワーク、春、春のApplicationContext Frameworkは、開発者、最も使用のApplicationContextたBeanFactory代わりの下部ためのものです。(ティーチング言います)
同じ:
設定ファイルは同一の場合。
ApplicationContextの:
その実装とのインターフェイスを見ることによって、私たちは(Ctrlキー+ Hを押した後、選択IDEA)階層を見ることができます
メインApplicationContextの実装クラス:
-ClassPathXmlApplicationContext:クラスパスからコンフィギュレーションファイルをロード
-FileSystemXmlApplicationContext:ファイルシステムから設定ファイルをロードします
ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
ライン上で作成されたコンテナとBeanの負荷を達成するために
注射依存様式の二種類を用い3.Spring
- コンストラクタ・インジェクション
-setter注入
まず、我々は2つのテスト科目を宣言します
public class Person {
private String name;
private Integer age;
private Integer hight;
//构造,set、get方法略
}
public class Man {
private Person person;
//构造,set、get方法略
}
コンストラクタ・インジェクション
コンストラクタ噴射がされている構成で実行される方法に基づいて使用して、完全な依存性注入コンテナを達成するためにパラメータのセットを持つコンストラクタクラスを呼び出す<コンストラクタ、引数> <豆>タグ要素
コンストラクタ・インジェクションプロパティ値、注射のためのvalue属性を使用してパラメータ値を使用してXMLでBeanを追加します。
対応するxmlファイル
<bean id="person" class="com.sakura.spring.beans.constructor.Person">
<constructor-arg value="二狗" index="0" type="java.lang.String"></constructor-arg>
<constructor-arg value="170" name="age"></constructor-arg>
<constructor-arg value="12" name="hight"></constructor-arg>
</bean>
<bean id="man" class="com.sakura.spring.beans.constructor.Man">
<construc 大专栏 Spring学习笔记:Bean的配置及其细节tor-arg ref="person"/>
</bean>
間で
これは注意する必要があります。
のみ指定された値、すなわちケースにおいて、
<constructor-arg value="二狗" ></constructor-arg>
<constructor-arg value="170" ></constructor-arg>
<constructor-arg value="12"></constructor-arg>
デフォルトの割り当てのためのコンテナクラスの属性型の自動変換
文字列型とint型に対応直面したとき、コンパイラは文句を言うでしょう。
2.データの順序およびタイプに基づいて割り当てられる容器の値に対応する入力し、インデックスを指定することができ
3.あなたはそれが基本的にコンストラクタを呼び出しているので、名前やエラーの値が割り当て与えられたを繰り返しますが、その正確な注入、name属性を指定することができます
図4はまた、参考文献によって指示他のビーンに依存し得ます
テストコード:
public static void main(String[] args) {
ApplicationContext ctx = new ClassPathXmlApplicationContext("com/sakura/spring/beans/constructor/constructor-applicationContext.xml");
Person person=ctx.getBean("person",Person.class);
System.out.println(person);
Man man=ctx.getBean("man",Man.class);
System.out.println(man);
}
テスト結果:
Person{name='二狗', age=170, hight=12}
Man{person=Person{name='二狗', age=170, hight=12}}
実現依存関係。
セッター・インジェクション
コンテナが呼び出すと、引数なしのコンストラクタが Beanコンテナで、Beanを初期化しセッターセッター関数を呼び出すの<bean>タグの<property>を使用して、要素のプロパティの属性名属性は、一貫して、クラスのニーズを指定します他の同じコンストラクタメソッド
XMLで新しいBeanを追加します
<bean id="personSet" class="com.sakura.spring.beans.constructor.Person">
<property name="hight" value="170"></property>
<property name="age" value="12"></property>
<property name="name" value="张三"></property>
</bean>
対応するsetメソッドに対応する出力を追加することにより
、我々は出力を見ることができます
set方法..height
set方法..age
set方法..name
Person{name='张三', age=12, hight=170}
セット注入法
単一の値の注入に加えて、我々は時々配列またはコレクション内に注入される必要があります
<リスト>:値を注入し、許可を繰り返し
<セット>:値を注入すると、一意である必要があります
<地図>:注入キー(名前)値のセット、名前と値のペアは、任意のタイプのものであってもよいです
<小道具>:名前と値のペアは、任意のタイプであってもよい注入キー(名前)値のセット、
テストカテゴリ:
public class JavaCollection {
private List list;
private Map map;
private Properties prop;
}
豆を追加します。
<bean id="coll" class="com.sakura.spring.beans.constructor.JavaCollection">
<property name="list">
<!-- 注入集合 值可重复 set就不举例了-->
<list>
<value>list1</value>
<value>list1</value>
</list>
</property>
<property name="map">
<!-- 注入map -->
<map>
<entry key="二蛋">
<value>18</value>
</entry>
<entry key="三蛋">
<value>5</value>
</entry>
</map>
</property>
<property name="prop">
<!-- 注入properties -->
<props>
<prop key="二黑">男</prop>
<prop key="三黑">男</prop>
</props>
</property>
</bean>
テスト結果:
JavaCollection{list=[list1], map={二蛋=18, 三蛋=5}, prop={三黑=男, 二黑=男}}