bean的注入方式

1)通过set方法注入

  

<bean id="person1" class="com.example.bean.Person">
    <property name="name" value="测试"/>
    <property name="age" value="20"/>
    <property name="testList">
      <list>
        <value>value_list_1</value>
        <value>value_list_2</value>
        <value>value_list_3</value>
      </list>
    </property>
    <property name="testArray">
      <array>
        <value>array_value1</value>
        <value>array_value2</value>
        <value>array_value3</value>
      </array>
    </property>
  <property name="testList1">
    <null/>
  </property> </bean>

2)通过构造方法注入(通过该方法注入时,可以使用name属性或者index来表示参数,index代表的是在有参构造器中的参数的位置,name表示的是参数的名称)

  <bean id="person2" class="com.example.bean.Person">
    <constructor-arg index="0" value="lisi"/>
    <constructor-arg index="1" value="20"/>
    <constructor-arg index="2">
      <list>
        <value>value_list_1</value>
        <value>value_list_2</value>
        <value>value_list_3</value>
      </list>
    </constructor-arg>
    <constructor-arg index="3">
      <array>
        <value>array_value1</value>
        <value>array_value2</value>
        <value>array_value3</value>
      </array>
    </constructor-arg>
  </bean>

3)通过p标签注入

<!-- 将car对象配置到容器中 -->
<bean name="car" class="cn.example.bean.Car" >
    <property name="name" value="兰博基尼" ></property>
    <property name="color" value="黄色" ></property>
</bean>
<!-- p名称空间注入, 走set方法
    1.导入P名称空间  xmlns:p="http://www.springframework.org/schema/p"
    2.使用p:属性完成注入
        |-值类型: p:属性名="值"
        |-对象类型: p:属性名-ref="bean名称"
 -->
    <bean  name="user3" class="cn.example.bean.User" p:name="jack" p:age="20" p:car-ref="car"  >
    </bean>

 注:

  注入null值

    bean注入的时候可以注入空值,只需要在<property>标签中使用<null/>

<bean id="person1" class="com.example.bean.Person">
    <property name="name">
        <null/>
    </property>
</bean>

  注入的属性值包括特殊符号

    例如:注入<<测试>>

    1、将<>进行转义&lt; &gt;

<bean id="person1" class="com.example.bean.Person">
    <property name="name" value=&lt;&lt;测试&gt;&gt;/>
</bean>

    2、将内容添加到CDATA中

<bean id="person1" class="com.example.bean.Person">
    <property name="name">
        <value><![CDATA[<<测试>>]]></value>
    </property>
</bean>

4)外部bean注入

 name属性:类中的属性的名称,ref属性:创建的对象的bean标签的id值

 

<bean id="userService" class="com.example.service.UserService>
    <property name="userDao" ref="userDaoImpl"/>
</bean>
<bean id="userDaoImpl" class="com.example.dao.impl.UserDaoImpl></bean>

5)内部bean注入

 

<bean id="emp" class="com.example.bean.Emp">
    <property name="ename" value="测试"/>
    <!--设置对象类型属性-->
    <property name="dept">
       <bean id="dept" class="com.example.bean.Dept>
          <property name="dname" value="HR部门"></property>    
       </bean>                 
    </property>
</bean>
    

6)级联赋值

第一种写法

<bean id="emp" class="com.example.bean.Emp">
    <property name="ename" value="测试"></property>
    <!--级联赋值-->
    <property name="dept" ref="dept"></property>
</bean>
<bean id="dept" class="com.example.bean.Dept">
    <property name="dname" value="HR部门"></property>
</bean>

第二种写法,必须生成该类中需要级联赋值的对象的getter方法

<bean id="emp" class="com.example.bean.Emp">
    <property name="ename" value="测试"></property>
    <!--级联赋值-->
    <property name="dept" ref="dept"></property>
    <property name="dept.name" value="技术部"></property>
</bean>
<bean id="dept" class="com.example.bean.Dept">
    <property name="dname" value="HR部门"></property>
</bean>
原文地址:https://www.cnblogs.com/xing-29391/p/15041038.html