博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
spring4-2-bean配置-6-使用外部属性文件
阅读量:4576 次
发布时间:2019-06-08

本文共 3881 字,大约阅读时间需要 12 分钟。

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

Spring 提供了一个 PropertyPlaceholderConfigurer 的 BeanFactory 后置处理器, 这个处理器允许用户将 Bean 配置的部分内容外移到属性文件中. 可以在 Bean 配置文件里使用形式为 ${var} 的变量, PropertyPlaceholderConfigurer 从属性文件里加载属性, 并使用这些属性来替换变量.
Spring 还允许在属性文件中使用 ${propName},以实现属性之间的相互引用。

一个原始的数据库源配置

1.引入类库-c3p0 和 mysql:

com.mchange
c3p0
0.9.5.1
mysql
mysql-connector-java
5.1.35

 

2.配置ComboPooledDataSource数据源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=rootpassword=rootdriverClass=com.mysql.jdbc.DriverjdbcUrl=jdbc:mysql://127.0.0.1:3306/retrieval?characterEncoding=UTF-8

 

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

首先引入命名空间context.

 

  这样就完成部署了.

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

 

转载于:https://www.cnblogs.com/a198720/p/4585194.html

你可能感兴趣的文章
OFO和摩拜共享单车
查看>>
Linux软件安装管理之1——rpm命令管理
查看>>
visual studio 2017 使用笔记
查看>>
iTerm2 半透明颜色主题与字体配置
查看>>
《Entity Framework 6 Recipes》中文翻译系列 (14) -----第三章 查询之查询中设置默认值和存储过程返回多结果集...
查看>>
asp.net后台InputStream存储图片,前台js接收解析存放路径地址
查看>>
双飞翼布局和圣杯布局
查看>>
java并发编程之CountDownLatch与CyclicBarrier
查看>>
AOJ 0525 - Osenbei
查看>>
iOS 直播-闪光灯的使用
查看>>
关于 Failed to establish a new connection: [Errno 11004] getaddrinfo failed',))的问题
查看>>
python数据类型之间的转换
查看>>
[T-ARA][I'm so bad]
查看>>
win7,win10获取屏幕缩放适应截图
查看>>
MySQL常用命令
查看>>
python3实现合并两个有序数组
查看>>
InventTrans中的状态跟踪
查看>>
python flsak 框架
查看>>
h5页面调起微信支付
查看>>
loadrunner中pacing设置01
查看>>