Spring使用外部的配置文件

在使用Spring做web项目的时候,通常会使用到数据库的连接信息

jdbcUrl   
driverClass   
username   
password   

那么应该如何使用这些属性呢?

如在Spring中使用数据库连接池(数据源)

你可能会这样写

<!-- 配置数据库连接池 ComboPooledDataSource -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
    <!-- 基本的连接信息 -->
    <property name="jdbcUrl" value="jdbc:mysql:///mybatis"/>
    <property name="driverClass" value="com.mysql.jdbc.Driver"/>
    <property name="user" value="root"/>
    <property name="password" value="root"/>
    <!-- 一些管理的配置 -->
    <property name="initialPoolSize" value="3"></property>
    <property name="minPoolSize" value="3"></property>
    <property name="maxPoolSize" value="5"></property>
    <property name="acquireIncrement" value="3"></property>
    <property name="maxIdleTime" value="1800"></property>
</bean>

这是一种硬编码,如果数据库的连接环境变了,我们需要去beans.xml这个文件中进行修改,如果这个文件比较大,内容很多,找到这些信息就挺麻烦的。

怎么办呢,将这些信息提取出来,放在单独一个属性文件中

jdbc.properties,以后想改数据库连接环境的话改这个文件就可以了。

jdbcUrl        = jdbc:mysql:///mybatis
driverClass    = com.mysql.jdbc.Driver
username       = root
password       = root

那么问题又来了,beans.xml文件需要读取jdbc.properties中的信息,我们需要告诉它去哪儿找jdbc.properties文件,怎么办呢?

这就涉及到本讲讨论的问题:Spring使用外部的配置文件

两种方式

1.常用,较简单

<!--加载外部的properties文件(方式一),用于解析${}形式的变量。-->
<!--如果需要加载多个properties文件,就写在一起,之间使用逗号隔开。-->
<context:property-placeholder location="classpath:jdbc.properties"/>

2.

<!-- 加载外部的properties文件(方式二) -->
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="locations">
        <list>
            <!--可以有多个-->
            <value>classpath:jdbc.properties</value>
        </list>
    </property>
</bean>

有了此配置之后,数据源的配置就可以变为

<!-- 加载外部的properties文件(方式一),用于解析${}形式的变量。 
        如果需要加载多个properties文件,就写在一起,之间使用逗号隔开。    -->
    <context:property-placeholder location="classpath:jdbc.properties"/>

<!-- 配置数据库连接池 ComboPooledDataSource -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
    <!-- 基本的连接信息 -->
    <property name="jdbcUrl" value="${jdbcUrl}"/>
    <property name="driverClass" value="${driverClass}"/>
    <property name="user" value="${username}"/>
    <property name="password" value="${password}"/>
    <!-- 一些管理的配置 -->
    <property name="initialPoolSize" value="3"></property>
    <property name="minPoolSize" value="3"></property>
    <property name="maxPoolSize" value="5"></property>
    <property name="acquireIncrement" value="3"></property>
    <property name="maxIdleTime" value="1800"></property>
</bean>

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值