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>

 

posted @ 2018-08-02 15:45  梦里下起了雪  阅读(364)  评论(0编辑  收藏  举报