Spring表达式注入方法
情景:有的时候,我们需要给某个组件的某个属性注入值,而注入这个属性的值,则来源于其他组件中的某个属性的值,例如:
public class Student { private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } }
我们想为这个Student组件的name属性注入一个其他组件的属性值,此时应该怎么办呢?这时我们就可以使用spring表达式了,例如:
(1)注入Properties的属性值:value="#{id名.key}"
<util:properties id="dbParams"> <prop key="user">root</prop> </util:properties> <bean id="student" class="com.zlc.test.Student"> <property name="name" value="#{dbParams.user}"></property> </bean>
这样就可以将组件dbParams的user值注入组件student中了
(2)注入普通组件的属性值:value="#{id名.属性名}"
我们还可以将一个普通组件的属性值注入student中:
<bean id="computer" class="com.zlc.test.Computer"> <property name="name" value="奔腾"></property> <property name="params" ref="dbParams"> </property> </bean> <bean id="student" class="com.zlc.test.Student"> <property name="name" value="#{computer.name}"></property> </bean>
注意:若要将computer中的属性name值注入student中,则Computer类中name必须含有getter方法,否则程序将报错
(3)注入List集合的某个元素值:value="#{id名[元素下标]}",元素下标从零开始计数
例如:
<bean id="student" class="com.zlc.test.Student"> <property name="name" value="#{myList[0]}"></property> </bean> <util:list id="myList"> <value>小明</value> </util:list>
(4)注入Map集合的某个元素值,value="#{id名.key名}"
例如:
<bean id="student" class="com.zlc.test.Student"> <property name="name" value="#{myMap.name}"></property> </bean> <util:map id="myMap"> <entry key="name" value="小华"></entry> </util:map>
(5)注入Set集合的某个元素值,value="#{id名[元素下标]}",下标从零开始计数
例如:
<bean id="student" class="com.zlc.test.Student"> <property name="name" value="#{mySet[0]}"></property> </bean> <util:set id="mySet"> <value>小明</value> </util:set>