在使用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

aaarticlea/png;base64,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" alt="" />

那么问题又来了,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>

Spring使用外部的配置文件的更多相关文章

  1. 【Java Web开发学习】Spring加载外部properties配置文件

    [Java Web开发学习]Spring加载外部properties配置文件 转载:https://www.cnblogs.com/yangchongxing/p/9136505.html 1.声明属 ...

  2. Spring整合SSM的配置文件详解

    在整合三大框架SSM , 即 Spring 和 SpingMVC和Mybatis的时候,搭建项目最初需要先配置好配置文件. 有人在刚开始学习框架的时候会纠结项目搭建的顺序,因为频繁的报错提示是会很影响 ...

  3. Spring Boot 外部化配置(一)- Environment、ConfigFileApplicationListener

    目录 前言 1.起源 2.外部化配置的资源类型 3.外部化配置的核心 3.1 Environment 3.1.1.ConfigFileApplicationListener 3.1.2.关联 Spri ...

  4. Spring Boot 外部化配置(二) - @ConfigurationProperties 、@EnableConfigurationProperties

    目录 3.外部化配置的核心 3.2 @ConfigurationProperties 3.2.1 注册 Properties 配置类 3.2.2 绑定配置属性 3.1.3 ConfigurationP ...

  5. Mybatis+Springmvc+Spring整合常用的配置文件

    1.创建web项目 2.导入mabatis spring springnvc 需要的jar包 3.创建mybatis,spring,springmvc的配置文件 (1)web.xml配置文件 < ...

  6. Spring Boot -- 外部配置的属性使用

    Spring Boot允许使用propertities文件.yaml文件或者命令行参数作为外部配置. 命令行参数配置 Spring Boot可以基于jar包运行,打成jar包的程序可以直接通过下面的命 ...

  7. Spring Boot 的核心配置文件有哪几个?它们的区别是什么?

    Spring Boot 的核心配置文件是 application 和 bootstrap 配置文件.application 配置文件这个容易理解,主要用于 Spring Boot 项目的自动化配置.b ...

  8. maven Spring获取不到配置文件

    如题: 如果在maven项目中,Spring获取不到配置文件, 把配置文件放到.src/main/resource文件夹下即可 import org.springframework.context.s ...

  9. Spring中引入其他配置文件

    一.引入其他 模块XML 在Spring的配置文件,有时候为了分模块的更加清晰的进行相关实体类的配置. 比如现在有一个job-timer.xml的配置 <?xml version="1 ...

随机推荐

  1. c 指针兼容性问题

    指针兼容性问题: const指针不能赋值给非const指针. 非const指针可以赋值给const 指针,但前提是只是一层间接运算 Example: int *pt1; const *pt2; con ...

  2. static方法不能直接访问类内的非static变量和不能调用this,super语句分析

    大家都知道在static方法中,不能访问类内非static成员变量和方法.可是原因是什么呢? 这首先要从static方法的特性说起.static方法,即类的静态成员经常被称为"成员变量&qu ...

  3. AnyChartStock去除水印方法

    最近在使用AnyChartStock的图表,功能很强大,但下载过来是有水印的,虽然网上也有很多破解无水印的版本,但基本都是AnyChart的,AnyChartStoc的几乎没有.所以自己尝试着去除水印 ...

  4. python之内置类型: 序列, 字典

    序列: 元素之类有序的类型. Python 2.x支持6种内置序列: list, tuple, string, ustring, buffer, xrange (1)序列的定义: list: [] t ...

  5. 【Go】 http webserver

    示例1: package main import ( "fmt" "net/http" "encoding/json" ) var i in ...

  6. ThinkPHP/Common/extend.php

    <?php // +---------------------------------------------------------------------- // | ThinkPHP [ ...

  7. matlab实现插值法sin函数

    插值法实现sin函数: %calculate and print the sine function %input: x %output: sin(x) similar function y = si ...

  8. 问题 K: 【USACO2012Feb】植草 {Bronze题2}

    按着矩形周长的思路,到当前边的时候,前一层的覆盖数乘以高度加入 ans 就行,然而真正的算法可能并不是这个..只能想到这个了 ; type node=record l,r,mid,sum,delta: ...

  9. 【BZOJ 1068】[SCOI2007]压缩

    Description 给 一个由小写字母组成的字符串,我们可以用一种简单的方法来压缩其中的重复信息.压缩后的字符串除了小写字母外还可以(但不必)包含大写字母R与M,其中M 标记重复串的开始,R重复从 ...

  10. 分布式文件系统 - FastDFS

    分布式文件系统 - FastDFS 别问我在哪里 也许我早已不是我自己,别问我在哪里,我一直在这里. 突然不知道说些什么了... 初识 FastDFS 记得那是我刚毕业后进入的第一家公司,一个技术小白 ...