Spring使用xml配置文件装配Bean和属性注入

1.使用xml装配Bean对象

  在applicationContext.xml文件中使用<bean></bean>标签进行装配。class中写要装配的Bean对象的全类名,id中写该Bean对象的唯一标识。

<bean class="类的全类名" id="该bean对象的唯一标识"></bean>

在这里插入图片描述
说明:<bean></bean>标签中的id属性与name属性的区别

  id属性是唯一标识,该属性的值就是该Bean对象的唯一标识号。name属性可以为该Bean对象设置多个别名,每个别名之间可以使用空格或者逗号或者分号分隔;通过任何别名都可以获取到bean对象。但多个Bean对象的name属性值不能相同。

<bean class="类的全类名" name="标识1 标识2 ……"></bean>

在这里插入图片描述

2. 基于有参构造函数的依赖注入

2.1 复杂类型的依赖注入

1)通过有参构造函数的方式注入Bean对象

<contructor-arg ref="对象的id属性值"></contructor-arg>

在这里插入图片描述
2)通过c命名空间进行依赖注入

在spring的配置文件的约束中引入如下内容:

 xmlns:c="http://www.springframework.org/schema/c"
<bean c:有参构造函数的参数列表名-ref=" 对象的id属性值"></bean>

<bean c:_有参构造函数的参数列表索引下标-ref=" 对象的id属性值"></bean>

在这里插入图片描述

2.2 简单类型的依赖注入方式

1)使用有参构造函数方式进行依赖注入

<constructor-arg value="属性值"></constructor-arg>

在这里插入图片描述


<constructor-arg name="属性名" value="属性值"></constructor-arg>

在这里插入图片描述


<constructor-arg index="索引" value="属性值"></constructor-arg>

在这里插入图片描述
2)使用c命名空间进行依赖注入

在spring配置文件的约束空间中引入约束

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

在这里插入图片描述
3)注入List类型

在List集合中注入简单类型

<list>
      <value>值1</value>
      <value>值2</value>
      ……
</list>

在这里插入图片描述

在List类型中注入对象

<list>
       <ref bean="对象1" />
       <ref bean="对象2" />
       ……
</list>

在这里插入图片描述


在这里插入图片描述
  在List集合中,如果注入的是简单类型,则使用<list><value></value</list>;如果注入的是非简单类型,则使用<list><ref bean="" /></list>

4)注入Set集合

简单类型注入:

<set>
    <value>值1</value>
    <value>值2</value>
      ……
</set>

复杂类型注入:

<set>
    <ref bean="对象1" />
     <ref bean="对象2" />
      ……
</set>

下面以在Set中装配对象为例:
在这里插入图片描述
注意:此处的Set集合的底层是HashSet,是一个有序的Set集合,可以保持集合中元素的顺序,且集合中的元素不可重复。

5)注入map集合

简单类型的注入:

<map>
      <entry key="key1" value="值1" />
      <entry key="key2" value="值2" />
       ……
</map>

复杂类型的注入:

<map>
      <entry key="key1" value-ref="对象1" />
      <entry key="key2" value-ref="对象2" />
       ……
</map>

在这里插入图片描述
6)注入数组类型

简单类型的注入:

<array>
        <value>值1</value>
        <value>值2</value>
        ……
</array>

复杂类型的注入:

<array>
       <ref bean="对象1的id" />
        <ref bean="对象2的id" />
        ……
</array>

在这里插入图片描述

2.3 利用index和type属性可以解决构造方法重载问题

在这里插入图片描述

3. 基于setter方法的依赖注入

3.1 装配简单类型
<property name="属性名" value="属性值"></property>

在这里插入图片描述
注意:要区分成员变量与属性名。

  成员变量指的是在类中声明定义的变量或者常量;属性名指的是getter/setter方法去掉get/set后留下的部分再将首字母变为小写,例如:setTrack——>Track——>track。

3.2 装配复杂类型

1)利用setter方法装配对象

1.1)引入外部bean:可以使用property的ref属性建立bean之间的引用关系。

<property name="属性名" ref="要装配的bean对象的唯一标识"></property>

在这里插入图片描述
1.2)使用内部Bean:内部Bean不能被外部引用,只能在内部使用
在这里插入图片描述
2)利用setter方法装配数组

元素是简单类型时:

<array>
        <value>值1</value>
        <value>值2</value>
        ……
</array>

元素是复杂类型:

<array>
       <ref bean="对象1" />
       <ref bean="对象2" />
       ……
</array>

在这里插入图片描述
3)利用setter方法装配List

元素是简单类型:

<list>
     <value>值1</value>
     <value>值2</value>
     ……
</list>

元素是复杂类型:

<list>
     <ref bean="对象1" />
     <ref bean="对象2" />
     ……
</list>

在这里插入图片描述
4)利用setter方法装配Map集合

元素是简单类型:

<map>
     <entry key="key1" value="值1" />
     <entry key="key2" value="值2" />
     ……
</map>

元素是复杂类型:

<map>
      <entry  key="key1" value-ref="对象1"/>
      <entry  key="key2" value-ref="对象2"/>
      ……
</map>

在这里插入图片描述

3.3 使用p名称空间注入

在spring的xml配置文件的空间约束中声明p名称空间的约束:

 xmlns:p="http://www.springframework.org/schema/p"
<bean id="标识符" class="要创建的bean对象的类的全类名" p:属性名="属性值" 
p:属性-ref="bean对象标识符"></bean>

在这里插入图片描述

3.4 使用util名称空间的注入

利用setter方法,针对于List、Map、Set和数组等集合类型的注入。

使用util名称空间需要引入如下约束:

  xmlns:util="http://www.springframework.org/schema/util"
  
 xsi:schemaLocation="http://www.springframework.org/schema/util
       http://www.springframework.org/schema/util/spring-util.xsd"

在这里插入图片描述
适用于数组和list集合

<util:list id="标识符">
     <ref bean="对象1" />
     <ref bean="对象2" />
     ……
</util:list>

在这里插入图片描述
适用于Map集合

<util:map id="标识符">
    <!--map集合中的元素是简单类型
    <entry key="key1" value="值1" />
    <entry key="key2" value="值2" />
    ……
    -->
    <!--map集合中的元素是复杂类型
    <entry key="key1" value-ref="对象1" />
    <entry key="key2" value-ref="对象2" />
    ……
    -->
</util:map>

适用于set集合

<util:set id="标识符">
        <!--
         set集合中的元素是简单类型
         <value>值1</value>
         <value>值2</value>
         ……
         -->
         
         <!--
         set集合中的元素是复杂类型
         <ref bean="对象1" />
         <ref bean="对象2" />
         ……
         -->
</util:set>
3.5 配置Properties的属性值

1)Properties对应的bean

package com.zm.bean;

import java.util.Properties;

public class DataSource {
    private Properties pro;
    public Properties getPro() {
        return pro;
    }
    public void setPro(Properties pro) {
        this.pro = pro;
    }
    @Override
    public String toString() {
        return "DataSource{" +
                "pro=" + pro +
                '}';
    }
}

2)在xml文件中的配置

<!--配置Properties的属性值-->
    <bean id="dataSource" class="com.zm.bean.DataSource">
        <property name="pro">
        <!-- 使用props和prop子节点为Properties容器的属性赋值 -->
            <props>
                <prop key="username">root</prop>
                <prop key="password">xxxx</prop>
                <prop key="url">jdbc:mysql://localhost:3306/test</prop>
                <prop key="driverClassName">com.mysql.jdbc.Driver</prop>
            </props>
        </property>
    </bean>
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值