spring IoC (IDEA)—— 属性注入

1、注入简单值

简单值包括基本类型+String。

<bean id="s1" class="com.etc.entity.Student">
     <property name="no" value="2015001001"></property>
     <property name="name" value="张三"></property>
     <property name="gender" value="男"></property>
</bean>

2、引用其他的Bean

Teacher类的name字段增加getter和setter

<bean id="s1" class="com.etc.entity.Student">
    <property name="no" value="2015001001"></property>
    <property name="name" value="张三"></property>
    <property name="gender" value="男"></property>
    <property name="teacher" ref="t1"></property>
</bean>

<bean id="t1" class="com.etc.entity.Teacher">
    <property name="name" value="老师" />
</bean>

3、使用p命名空间装配属性

在通过set方法给bean注入关联项时是通过property元素来定义的,有了p命名空间,我们可以简单的把它们当做bean的一个属性来进行定义。

   使用p命名空间时需要先声明使用对应的命名空间,即在beans元素上加入以下代码

xmlns:p="http://www.springframework.org/schema/p"

使用p命名空间装配属性,可以简化配置: 

<bean id="t1" class="com.etc.entity.Teacher">
    <property name="name" value="老师" />
</bean>

<bean id="s1" class="com.etc.entity.Student"
      p:no="2015001002" p:name="李四" p:gender="男" p:teacher-ref="t1" />

4、装配集合

Spring不仅能注入简单类型数据,还能注入集合(Collection、无序集合Set、有序列表List)类型、数组(Array)类型、字典(Map)类型数据、Properties类型数据。

   List:Student类中增加以下字段并生成getter和setter:

        private List<String> hobby;

方式1:

<bean id="t1" class="com.etc.entity.Teacher">
    <property name="name" value="老师" />
</bean>

<bean id="s1" class="com.etc.entity.Student">
    <property name="no" value="2015001001"></property>
    <property name="name" value="张三"></property>
    <property name="gender" value="男"></property>
    <property name="teacher" ref="t1"></property>
    <property name="hobby">
        <list>
            <value>篮球</value>
            <value>足球</value>
            <value>乒乓球</value>
        </list>
    </property>
</bean>

存在的问题,无法复用。

方式2:beans中引入util空间

       xmlns:util="http://www.springframework.org/schema/util"
       http://www.springframework.org/schema/util
       http://www.springframework.org/schema/util/spring-util.xsd
<util:list id="hobby">
    <value>唱歌</value>
    <value>跳舞</value>
    <value>打游戏</value>
</util:list>

<bean id="s2" class="com.etc.entity.Student"
      p:no="2015001002" p:name="李四"
      p:gender="男" p:hobby-ref="hobby"
      p:teacher-ref="t1" >
</bean>

Map:Student类中增加以下字段并生成getter和setter:

       private Map<String,String> courses;

        方式1: 

 <bean id="s1" class="com.etc.entity.Student">
    <property name="no" value="2015001001"></property>
    <property name="name" value="张三"></property>
    <property name="gender" value="男"></property>
    <property name="teacher" ref="t1"></property>
    <property name="courses">
        <map>
            <entry key="Java"  value="Java学习"/>
            <entry key="MySQL"  value="MySQL学习"/>
        </map>
    </property>
 </bean>

存在的问题,无法复用。

方式2:引入util空间

<util:map id="courses">
    <entry key="Java"  value="Java学习"/>
    <entry key="MySQL"  value="MySQL学习"/>
</util:map>

<bean id="s2" class="com.etc.entity.Student"
      p:no="2015001002" p:name="李四"
      p:gender="男" p:courses-ref="courses"
      p:teacher-ref="t1" >
</bean>

5、装配空值

在Student类中增加age字段,设定初值为18。

private Integer age = 18;

将其值修改为null

<bean id="s5" class="com.etc.entity.Student">
    <property name="no" value="2015001001"></property>
    <property name="name" value="张三"></property>
    <property name="age"><null/></property>
</bean>

猜你喜欢

转载自blog.csdn.net/Milan__Kundera/article/details/82526448
今日推荐