在使用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. 11g RAC R2 体系结构---进程,日志

    进程结构:Overview of Oracle Clusterware Platform-Specific Software Components When Oracle Clusterware is ...

  2. Json(2)-DataContractJsonSerializer

    public static void DataContractSerializeDemo()        {            User user = new User { UserID = 1 ...

  3. Python开发【第一篇】Python基础之函数递归

    函数递归 递归的本质: 就是一个函数调用另外一个函数. def d(): return '123' def c(): r = d() return r def b(): r = c() return ...

  4. Basic Vlan Configure

    Basic Vlan CLI Configure Switch>en Switch#conf t Enter configuration commands, one per line.  End ...

  5. ASP.NET——拒绝访问。 (异常来自HRESULT:0x80070005 (E_ACCESSDENIED))

    运行ASP.NET网站的时候出现下面这个问题,这个问题如图: 这个问题的解决方法为: 运行dcomcnfg 点 组件服务->服务->电脑->我的电脑->DCOM 配置 找到&q ...

  6. 从零开始学ios开发(十二):Table Views(上)

    这次学习的控件非常重要且非常强大,是ios应用中使用率非常高的一个控件,可以说几乎每个app都会使用到它,它就是功能异常强大的Table Views.可以打开你的iphone中的phone.Messa ...

  7. 从零开始学ios开发(五):IOS控件(2),Slider

    下面继续学习ios的其他控件,这次会使用到的控件有Slider,当然还有一些之前已经使用过的控件Label. 这次我们不新建一个project了,当然如果你愿意重新创建一个新的项目也完全可以,我们还是 ...

  8. php中const与define的使用区别 详解

    1.const用于类成员变量定义,一旦定义且不能改变其值.define定义全局常量,在任何地方都可以访问. 2.define不能在类中定义而const可以. 3.const不能在条件语句中定义常量 i ...

  9. cocos中BatchNode精灵集合的使用

    1.CCSpriteBatchNode是为了提高渲染效率而实现的,它继承自CCNode 2.fps:帧率,是游戏中衡量流畅度的一个很重要的概念,cocos中默认的帧率是60,即一秒刷新60帧 3.精灵 ...

  10. c语言编程之栈(链表实现)

    用链表实现栈,完成了出栈入栈功能. #include"stdio.h" typedef int element; //define a struct descirbe a stac ...