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

  在配置文件里配置 Bean 时, 有时需要在 Bean 的配置里混入系统部署的细节信息(例如: 文件路径, 数据源配置信息等). 而这些部署细节实际上需要和 Bean 配置相分离
Spring 提供了一个 PropertyPlaceholderConfigurer 的 BeanFactory 后置处理器, 这个处理器允许用户将 Bean 配置的部分内容外移到属性文件中. 可以在 Bean 配置文件里使用形式为 ${var} 的变量, PropertyPlaceholderConfigurer 从属性文件里加载属性, 并使用这些属性来替换变量.
Spring 还允许在属性文件中使用 ${propName},以实现属性之间的相互引用。

一个原始的数据库源配置

1.引入类库-c3p0 和 mysql:

        <dependency>
<groupId>com.mchange</groupId>
<artifactId>c3p0</artifactId>
<version>0.9.5.1</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.35</version>
</dependency>

2.配置ComboPooledDataSource数据源bean实例:

    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="user" value="root"></property>
<property name="password" value="root"></property>
<property name="driverClass" value="com.mysql.jdbc.Driver"></property>
<property name="jdbcUrl" value="jdbc:mysql://127.0.0.1:3306/retrieval?characterEncoding=UTF-8"></property>
</bean>

3.测试:

public class App {

    @SuppressWarnings("resource")
public static void main(String[] args) throws SQLException {
ApplicationContext ctx = new ClassPathXmlApplicationContext("beans-properties.xml");
DataSource ds = ctx.getBean("dataSource",DataSource.class);
System.out.println(ds.getConnection());
} }

结果:

六月 18, 2015 10:20:03 上午 org.springframework.context.support.ClassPathXmlApplicationContext prepareRefresh
信息: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@2919d975: startup date [Thu Jun 18 10:20:03 CST 2015]; root of context hierarchy
六月 18, 2015 10:20:03 上午 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
信息: Loading XML bean definitions from class path resource [beans-properties.xml]
六月 18, 2015 10:20:04 上午 com.mchange.v2.log.MLog
信息: MLog clients using java 1.4+ standard logging.
六月 18, 2015 10:20:04 上午 com.mchange.v2.c3p0.C3P0Registry
信息: Initializing c3p0-0.9.5.1 [built 16-June-2015 00:06:36 -0700; debug? true; trace: 10]
六月 18, 2015 10:20:04 上午 com.mchange.v2.c3p0.impl.AbstractPoolBackedDataSource
信息: Initializing c3p0 pool... com.mchange.v2.c3p0.ComboPooledDataSource [ acquireIncrement -> 3, acquireRetryAttempts -> 30, acquireRetryDelay -> 1000, autoCommitOnClose -> false, automaticTestTable -> null, breakAfterAcquireFailure -> false, checkoutTimeout -> 0, connectionCustomizerClassName -> null, connectionTesterClassName -> com.mchange.v2.c3p0.impl.DefaultConnectionTester, contextClassLoaderSource -> caller, dataSourceName -> 1bqwdwp9a18ly9s70r2uf|45daddae, debugUnreturnedConnectionStackTraces -> false, description -> null, driverClass -> com.mysql.jdbc.Driver, extensions -> {}, factoryClassLocation -> null, forceIgnoreUnresolvedTransactions -> false, forceSynchronousCheckins -> false, forceUseNamedDriverClass -> false, identityToken -> 1bqwdwp9a18ly9s70r2uf|45daddae, idleConnectionTestPeriod -> 0, initialPoolSize -> 3, jdbcUrl -> jdbc:mysql://127.0.0.1:3306/retrieval?characterEncoding=UTF-8, maxAdministrativeTaskTime -> 0, maxConnectionAge -> 0, maxIdleTime -> 0, maxIdleTimeExcessConnections -> 0, maxPoolSize -> 15, maxStatements -> 0, maxStatementsPerConnection -> 0, minPoolSize -> 3, numHelperThreads -> 3, preferredTestQuery -> null, privilegeSpawnedThreads -> false, properties -> {user=******, password=******}, propertyCycle -> 0, statementCacheNumDeferredCloseThreads -> 0, testConnectionOnCheckin -> false, testConnectionOnCheckout -> false, unreturnedConnectionTimeout -> 0, userOverrides -> {}, usesTraditionalReflectiveProxies -> false ]
com.mchange.v2.c3p0.impl.NewProxyConnection@79af126e [wrapping: com.mysql.jdbc.JDBC4Connection@54e3322b]

从外部属性文件中读取

1.创建一个属性文件-db.properties

user=root
password=root
driverClass=com.mysql.jdbc.Driver
jdbcUrl=jdbc:mysql://127.0.0.1:3306/retrieval?characterEncoding=UTF-8

2.注册 PropertyPlaceholderConfigurer.使其可以从属性文件中加载属性.

首先引入命名空间context.

    <!-- 导入属性文件 -->
<context:property-placeholder location="classpath:db.properties"/> <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<!-- 使用外部属性文件中的属性 -->
<property name="user" value="${user}"></property>
<property name="password" value="${password}"></property>
<property name="driverClass" value="${driverClass}"></property>
<property name="jdbcUrl" value="${jdbcUrl}"></property>
</bean>

  这样就完成部署了.

  这样做的好处:修改外部属性文件的成本要比修改Spring 配置文件的成本要低的多.

spring4-2-bean配置-6-使用外部属性文件的更多相关文章

  1. Spring4.0学习笔记(4) —— 使用外部属性文件

    1.配置xml文件 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="htt ...

  2. Spring4学习笔记 - 配置Bean - 自动装配 关系 作用域 引用外部属性文件

    1 Autowire自动装配 1.1 使用:只需在<bean>中使用autowire元素 <bean id="student" class="com.k ...

  3. Spring - 配置Bean - 自动装配 关系 作用域 引用外部属性文件

    1 Autowire自动装配1.1 使用:只需在<bean>中使用autowire元素<bean id="student" class="com.kej ...

  4. IoC容器-Bean管理XML方式(引入外部属性文件)

    IoC操作Bean管理(引入外部属性文件) 1,直接配置数据库信息 (1)配置德鲁伊连接池 (2)引入德鲁伊连接池依赖jar包 2,通过引入外部属性文件配置数据库连接池 (1)创建外部属性文件,pro ...

  5. spring 使用外部属性文件

    一.PropertyPlaceholderConfigurer spring提供的PropertyPlaceholderConfigurer实现类能够使Bean在配置时引用外部属性文件. Proper ...

  6. [原创]java WEB学习笔记99:Spring学习---Spring Bean配置:自动装配,配置bean之间的关系(继承/依赖),bean的作用域(singleton,prototype,web环境作用域),使用外部属性文件

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  7. Spring(十):Spring配置Bean(三)Bean的作用域、使用外部属性文件

    Bean的作用域: 支持四种配置,分别是singleton,prototype,request,session. singleton 默认情况下在spring confinguration xml文件 ...

  8. 使用外部属性文件配置Bean以及Bean的生命周期方法

    1.使用外部属性文件配置Bean 在配置文件里配置 Bean 时, 有时需要在 Bean 的配置里混入系统部署的细节信息(例如: 文件路径, 数据源配置信息等). 而这些部署细节实际上需要和 Bean ...

  9. Spring-Bean配置-使用外部属性文件(转)

    Spring-Bean配置-使用外部属性文件 所以可以通过@value注解获取配置文件的key-value,生成一个配置文件bean.用以在代码中直接使用bean的方式. •在配置文件里配置Bean时 ...

随机推荐

  1. video4linux(v4l)使用摄像头的实例基础教程与体会(转)

    1. video4linux基础相关     1.1  v4l的介绍与一些基础知识的介绍   I.首先说明一下video4linux(v4l).           它是一些视频系统.视频软件.音频软 ...

  2. ecmall挂件开发实例二(转)

    下述例子讲述了快速增加挂件的方法,但对系统中的代码未做更改,基本参照image_ad挂件的方法. 第 一步: 了解首页模板结构 首页文 件结构 include hearder.html 包含的头文件, ...

  3. wdlinux中apache配置反向代理模块

    想要在.htaccess中开启反向代理功能都不行[apache中没有mod_proxy模块] .htaccess 文件内容如下 RewriteEngine On RewriteBase / Rewri ...

  4. wdlinux重新编译nginx

    背景: 由于web站点需要换主机,并且切换环境. 站点需要做反相代理(nginx),主机从美国迁移到香港[考虑到速度问题,为什么不用大陆阿里云ECS服务器?几十个域名备案麻烦,还有阿里云内地没有多ip ...

  5. cocos2dx 3.0 编译工程

    下载完2dx,运行setup.py,参考设置ANDROID_SDK,NDK_ROOT,ANT_ROOT变量 创建工程 cocos new testGame -p com.game.test -l cp ...

  6. jmeter线程组 讲解

  7. java web 程序---登陆的验证码实现显示

    是一个java文件 package com.sss; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; im ...

  8. [转]Jsp 映射

    <servlet> <servlet-name>SimpleJspServlet</servlet-name> <jsp-file>/jsp/simpl ...

  9. Mybatis扩展

    分页插件PageHelper 其实Mybstis内部有实现逻辑分页的功能,但是较为麻烦和难用.这里记录一个分页插件PageHelper的使用,我们可以在它的github地址https://github ...

  10. 【洛谷】P1095 守望者的逃离(递推)

    题目描述 恶魔猎手尤迪安野心勃勃,他背叛了暗夜精灵,率领深藏在海底的娜迦族企图叛变.守望者在与尤迪安的交锋中遭遇了围杀,被困在一个荒芜的大岛上.为了杀死守望者,尤迪安开始对这个荒岛施咒,这座岛很快就会 ...