Spring Bean配置文件格式讲解


由 Spring IoC 容器管理的对象称为 Bean,Bean 根据 Spring 配置文件中的信息创建。

Spring 配置文件支持两种格式,即 XML 文件格式和 Properties 文件格式。

Spring容器支持XML和Propertie两种格式的配置文件。在实际开发中,最常用的就是XML格式的配置方式。通过XML文件来注册并管理Bean之间的依赖关系。

XML格式配置文件

通常情况下,Spring 的配置文件都是使用 XML 格式的。XML 配置文件的根元素是 ,该元素包含了多个子元素 。每一个 元素都定义了一个 Bean对象,并描述了该 Bean 是如何被装配到 Spring 容器中的。

例如:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="
            http://www.springframework.org/schema/beans
            http://www.springframework.org/schema/beans/spring-beans.xsd">
<!--    管理DruidDataSource对象-->
    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
        <property name="driverClassName" value="com.mysql.jdbc.Drive"/>
        <property name="url" value="jdbc:mysql://location:3306/mybatis?useSSL=false"/>
        <property name="username" value="root"/>
        <property name="password" value="@wzw123456"/>
    </bean>
</beans>

定义Bean对象需要用到、标签,功能是一样的,只是不能包含子标签

、标签属于标签中的子标签,有如下属性:

属性名称描述
idBean 的唯一标识符,Spring IoC 容器对 Bean 的配置和管理都通过该属性完成。装配Bean时根据id值获取对象
name该属性可以为Bean指定多个名称,每个名称之间用逗号或分号隔开。Spring 容器可以通过 name 属性配置和管理容器中的 Bean。
class该属性指定了 Bean 的具体实现类,class属性值为该类的全路径名
scope设定Bean实例的作用范围,属性值可以为 singleton(单例)、prototype(原型)、request、session 和 global Session。默认值是 singleton。
init-method容器加载 Bean 时调用该方法,值为Bean具体实现类中的方法
destroy-method容器删除 Bean 时调用该方法,值为Bean具体实现类中的方法,该方法只在 scope=singleton 时有效
lazy-init懒加载,值为 true,容器在首次请求时才会创建 Bean 实例;值为 false,容器在启动时创建 Bean 实例。该方法只在 scope=singleton 时有效

元素中同样包含多个子元素,子元素介绍如下:

  • constructor-arg:可以使用此元素传入构造方法的参数进行实例化。该元素的 index属性设置构造参数的序号(从0开始),type 属性指定构造参数类型,参数值可通过ref 属性或 value 属性直接指定,也可通过 ref 或 value 子元素指定。
  • property:调用 Bean 实例中的 setter 方法完成属性赋值,从而完成依赖注入。该元素的 name 属性指定 Bean 实例中的相应属性名,ref 属性或 value 属性用于指定参数值。
  • ref: 、等元素的属性或子元素,可用于指定对 Bean 工
    厂中某个 Bean 实例的引用。值为另一个Bean对象的id或者name
  • value: Sproperty>、<constructor-arg>等元素的属性或子元素,可直接用于指定一
    个常量值。
  • list: 等元素的子元素,指定 bean 的属性类型为 List 或数组类型的属
    性值。
  • set:等元素的子元素,指定 bean 的属性类型为 Set 类型的属性值。
  • map:等元素的子元素,指定 bean 的属性类型为 Map 的属性值。
  • entry: 元素的子元素,用于设置一个键值对。其 key 属性指定字符串类型的
    键,可用 ref或 value 子元素指定其值,也可通过 value-ref 或 value 属性指定
    其值。

Proterties格式配置文件

Properties 配置文件主要以 key=value 键值对的形式存在,只能赋值,不能进行其他操作,适用于简单的属性配置。

使用流程

使用Properties配置文件的操作流程:

  1. 在Spring的XML配置文件中开启context命名空间

  2. 加载properties配置文件

  3. 在XML格式的配置文件中引入properties配置文件中的值:${key}替换 XML文件中的属性值

案例展示

# jdbc.properties
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:3306/spring_db
jdbc.username=root
jdbc.password=root
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="
            http://www.springframework.org/schema/beans
            http://www.springframework.org/schema/beans/spring-beans.xsd
            http://www.springframework.org/schema/context
            http://www.springframework.org/schema/context/spring-context.xsd">
<!--    管理DruidDataSource对象-->
    <context:property-placeholder location="jdbc.properties"
                                  system-properties-mode="NEVER"/>
    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
        <property name="driverClassName" value="${jdbc.driver}"/>
        <property name="url" value="${jdbc.url}"/>
        <property name="username" value="${jdbc.username}"/>
        <property name="password" value="${jdbc.password}"/>
    </bean>
</beans>
注意事项

<context:property-placeholder/>标签会优先加载系统的环境变量,然后再加载properties配置文件中的键值对;当配置文件中的某键值对的键和系统的环境变量重名时,会将系统中的环境变量传给XML配置文件;解决办法如下:

<!-- 自动优先加载系统的环境变量-->
<context:property-placeholder location="jdbc.properties"/> 

<!-- 不加载系统的环境变量 -->
<context:property-placeholder location="jdbc.properties"
                                  system-properties-mode="NEVER"/>

<!-- 不加载环境变量,从当前项目的根路径开始查询、加载所有的properties配置文件  -->
<context:property-placeholder location="classpath:*.properties"
                                  system-properties-mode="NEVER"/>

<!-- 不加载环境变量,不仅加载当前项目中所有的properties配置文件,还加载当前项目所依赖的所有jar包中的 properties 配置文件 -->
<context:property-placeholder location="classpath*:*.properties"
                                  system-properties-mode="NEVER"/>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值