透過 setXxx() 方法注入,要求類別有無參建構器。
<bean id="helloWorld" class="com.nucsoft.spring.HelloWorld">
<property name="hello" value="spring"/>
<property name="world">
<value>spring</value>
</property>
</bean>
name:屬性名(對應 setWorld)value:字面值ref:引用其他 Bean(與 value 互斥)透過建構器參數注入,不推薦常用(參數多時可讀性差)。
<bean id="car" class="com.nucsoft.spring.Car"> <constructor-arg name="brand" value="Audi"/> <constructor-arg index="0" value="BMW"/> <constructor-arg type="double" value="200000"/> </bean>
name:參數名(需編譯時保留參數名 -parameters)index:參數索引(從 0 開始)type:參數類型(區分重載)<property name="brand"> <value><![CDATA[<BM>]]></value> </property>
<property name="service" ref="serviceBean"/> <constructor-arg name="feather"> <ref bean="featherBean"/> </constructor-arg>
<property name="service"> <bean class="com.nucsoft.spring.Service"/> </property>
<constructor-arg name="feather"> <null/> </constructor-arg>
<property name="feather.length" value="23"/>
前提:feather 已注入且有 getFeather()。
| 集合類型 | XML 標籤 |
|---|---|
| List / Array | <list> |
| Set | <set> |
| Map | <map> + <entry> |
| Properties | <props> + <prop key=""> |
<property name="departments">
<list>
<ref bean="dept1"/>
<bean class="...Department">
<property name="deptName" value="dept02"/>
</bean>
</list>
</property>
<property name="departments">
<map>
<entry key-ref="dept1" value-ref="emp1"/>
<entry key="key01" value="value01"/>
</map>
</property>
注意:<entry> 不支援內嵌 <bean>。
<beans xmlns:util="https://www.springframework.org/schema/util" ...>
<util:list id="departments">
<bean class="...Department" p:deptName="dept01"/>
<ref bean="dept2"/>
</util:list>
<bean id="company" class="...Company">
<property name="departments" ref="departments"/>
</bean>
</beans>
支援:util:list、util:set、util:map、util:properties。
<beans xmlns:p="https://www.springframework.org/schema/p" ...> <bean id="emp" class="...Employee" p:employeeName="emp" p:age="23"/> </beans>
等同於 <property name="employeeName" value="emp"/>。
下一篇將介紹 @Component、@Autowired、@Value、@Configuration 等註解驅動配置。