spring - property和constructor-arg的使用
配置檔案的根元素是beans,每個元件使用bean元素來定義,bean元素可以有許多屬性,其中有兩個是必須的:id和class。id表示元件的預設名稱,class表示元件的型別。
方法/步驟
-
依賴注入的方式: constructor-arg:通過建構函式注入。 property:通過setxx方法注入。
-
設值注入,使用property子標籤:
<bean id="renderer" class="com.apress.prospring.ch2.StandardOutMessageRenderer"> <property name="messageProvider">
<ref local="provider"/>
</property>
</bean>
-
構造子注入,使用constructor-arg子標籤:
<bean id="provider"class="com.apress.prospring.ch4.ConfigurableMessageProvider"> <constructor-arg>
<value>This is a configurable message</value>
</constructor-arg>
</bean>
-
使用constructor-arg標籤的index屬性,對應於建構函式的多個引數,index屬性的值從0開始。
<bean id="provider" lass="com.apress.prospring.ch4.ConfigurableMessageProvider"> <constructor-arg index="0">
<value>first parameter</value>
</constructor-arg>
<constructor-arg index="1">
<value>second parameter</value>
</constructor-arg>
</bean>
-
使用constructor-arg的type屬性,避免構造子衝突:
<bean id="constructorConfusion" class="com.apress.prospring.ch4.ConstructorConfusion">
<constructor-arg type="int">
<value>90</value>
</constructor-arg>
</bean>
public class ConstructorConfusion {
public ConstructorConfusion(String someValue) {
System.out.println("ConstructorConfusion(String) called");
}
public ConstructorConfusion(int someValue) {
System.out.println("ConstructorConfusion(int) called");
}
}
-
注入集合屬性,使用list,map,set和props標籤,分別對應List,Map,Set和Properties:
<bean id="injectCollection" class="com.apress.prospring.ch4.CollectionInjection">
<property name="map">
<map>
<entry key="someValue">
<value>Hello World!</value>
</entry>
<entry key="someBean">
<ref local="oracle"/>
</entry>
</map>
</property>
<property name="props">
<props>
<prop key="firstName">
Rob
</prop>
<prop key="secondName">
Harrop
</prop>
</props>
</property>
<property name="set">
<set>
<value>Hello World!</value>
<ref local="oracle"/>
</set>
</property>
<property name="list">
<list>
<value>Hello World!</value>
<ref local="oracle"/>
</list>
</property>
</bean>