Springノート--注入に依存する異なるタイプの変数に対するいくつかの注入方式
15254 ワード
制御反転と依存注入は一つの概念であり、異なる角度に立っているにすぎない.いわゆる依存注入:
実行中に外部コンテナによってコンポーネントに動的に依存オブジェクトが注入されることを意味します.スプリングコンテナが起動すると、springコンテナが初期化され、beanオブジェクトが作成され、管理され、破棄されます.したがって、beanオブジェクトを作成するためにコードを記述することなく、コンテナからBeanオブジェクトを直接取得するだけでいいです.この現象を制御反転と呼び,アプリケーション自体が依存オブジェクトの作成とメンテナンスを担当せず,依存オブジェクトの作成とメンテナンスは外部コンテナが担当する.このように制御権はアプリケーションから外部容器に移行し,制御権の移行はいわゆる反転である.
さまざまなタイプのアトリビュートの注入方法について説明します.
新しいエンティティークラスStudent:
プロファイルxml:
テストコード:
印刷結果:
name:张三豊住所:青岛爱好有:饭睡打豆豆喜欢的书籍:[时间旅行者の妻、白髪魔女伝、谁の青春も迷わない]所有的银行卡{农行卡=62284832128534、建行卡=62284867867984}喜欢的电影[狂动物城、叶问3、カンフーパンダ]身分情报:{学号=20124280、性别=不详、クラス=三年二班}
実行中に外部コンテナによってコンポーネントに動的に依存オブジェクトが注入されることを意味します.スプリングコンテナが起動すると、springコンテナが初期化され、beanオブジェクトが作成され、管理され、破棄されます.したがって、beanオブジェクトを作成するためにコードを記述することなく、コンテナからBeanオブジェクトを直接取得するだけでいいです.この現象を制御反転と呼び,アプリケーション自体が依存オブジェクトの作成とメンテナンスを担当せず,依存オブジェクトの作成とメンテナンスは外部コンテナが担当する.このように制御権はアプリケーションから外部容器に移行し,制御権の移行はいわゆる反転である.
さまざまなタイプのアトリビュートの注入方法について説明します.
新しいエンティティークラスStudent:
public class Student { //
private String name; // ,Address
private Address address; //
private String[] hobby; //list
private List<String> books; //Map
private Map<String,String> cards; //set
private Set<String> movies; //Properties
private Properties info; public void show(){ System.out.println("name:"+name+" :"+address.getAddr()); System.out.println(" :"); for(int i=0;i<hobby.length;i++){ System.out.println(hobby[i]); } System.out.println(" :"+books); System.out.println(" "+cards); System.out.println(" "+movies); System.out.println(" :"+info); } //set
}
プロファイルxml:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="address" class="com.wang.entity.Address">
<property name="addr" value=" "></property>
</bean>
<bean id="student" class="com.wang.entity.Student">
<!-- -->
<property name="name" value=" "></property>
<!-- -->
<property name="address" ref="address"></property>
<!-- -->
<property name="hobby" >
<array>
<value> </value>
<value> </value>
<value> </value>
</array>
</property>
<!-- list -->
<property name="books">
<list>
<value> </value>
<value> </value>
<value> </value>
</list>
</property>
<!-- map -->
<property name="cards">
<map>
<entry key=" " value="62284832128534"></entry>
<entry key=" " value="62284867867984"></entry>
</map>
</property>
<!-- set -->
<property name="movies">
<set>
<value> </value>
<value> 3</value>
<value> </value>
</set>
</property>
<!-- properties -->
<property name="info">
<props>
<prop key=" ">20124280</prop>
<prop key=" "> </prop>
<prop key=" "> </prop>
</props>
</property>
</bean>
</beans>
テストコード:
@Test public void test1(){ ApplicationContext context=new ClassPathXmlApplicationContext("beans.xml"); Student s=(Student)context.getBean(Student.class); s.show(); }
印刷結果:
name:张三豊住所:青岛爱好有:饭睡打豆豆喜欢的书籍:[时间旅行者の妻、白髪魔女伝、谁の青春も迷わない]所有的银行卡{农行卡=62284832128534、建行卡=62284867867984}喜欢的电影[狂动物城、叶问3、カンフーパンダ]身分情报:{学号=20124280、性别=不详、クラス=三年二班}