Spring学习第八天:调用外部属性文件
来源:互联网 发布:长征六号 知乎 编辑:程序博客网 时间:2024/06/05 22:46
在配置文件里配置 Bean 时, 有时需要在 Bean 的配置里混入系统部署的细节信息(例如: 文件路径, 数据源配置信息等). 而这些部署细节实际上需要和 Bean 配置相分离
Spring 提供了一个 PropertyPlaceholderConfigurer 的 BeanFactory 后置处理器, 这个处理器允许用户将 Bean 配置的部分内容外移到属性文件中. 可以在 Bean 配置文件里使用形式为 $ {var } 的变量, PropertyPlaceholderConfigurer 从属性文件里加载属性, 并使用这些属性来替换变量.
Spring 还允许在属性文件中使用 ${ propName},以实现属性之间的相互引用。
我们以配置C3p0的数据源为例
下载c3p0的jar包,点击下载
下载mysql的jdbc包,点击下载
将c3p0的jar包和mysql的jdbc jar包放入项目工程中
新建一个beans-properties.xml文件
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"> <property name="user" value="root"></property> <property name="password" value="123456"></property> <property name="driverClass" value="com.mysql.jdbc.Driver"></property> <property name="jdbcUrl" value="jdbc:mysql://127.0.0.1/Test"></property> </bean></beans>
调用该bean
ApplicationContext ctx = new ClassPathXmlApplicationContext("beans-properties.xml");DataSource dataSource = (DataSource) ctx.getBean("dataSource");System.out.println(dataSource.getConnection());
输出结果如下
com.mchange.v2.c3p0.impl.NewProxyConnection@fcd6521 [wrapping: com.mysql.jdbc.JDBC4Connection@27d415d9]
说明c3p0搭建完成
然而,在一般的项目中,bean文件中会有非常多的bean,一旦需要修改,很有可能会造成错误。
因此,对于这种情况我们一般讲这些配置内容提取出来到一个propertis文件中
新建一个db.properties文件
user=rootpassword=123456driverClass=com.mysql.jdbc.DriverjdbcUrl=jdbc:mysql://127.0.0.1/Test
那如何引用这个文件呢?Spring为我们提供了PropertyPlaceholderConfigurer,可以通过它来完成这个操作
在spring2.0 之前,我们需要进行如下配置
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="location" value="classpath:jdbc.properties"></property></bean>
而在Spring2.5之后,我们只需要作如下配置
<!-- 导入属性文件 --> <context:property-placeholder location="classpath:db.properties"/>
完成上述PropertyPlaceholderConfigurer 的配置后,我们只需要使用${ column}就可以调用property文件中的值
XML配置
<!-- 导入属性文件 --> <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>
注意,${user} 需要加上双引号,否则会报错
调用bean
ApplicationContext ctx = new ClassPathXmlApplicationContext("beans-properties.xml");DataSource dataSource = (DataSource) ctx.getBean("dataSource");System.out.println(dataSource.getConnection());
输出结果
com.mchange.v2.c3p0.impl.NewProxyConnection@6d3af739 [wrapping: com.mysql.jdbc.JDBC4Connection@1da51a35]
建议使用如上的方法来配置数据源之类的bean
- Spring学习第八天:调用外部属性文件
- Spring学习,使用外部属性文件
- OC第八天:属性
- spring 使用外部属性文件
- Spring 使用外部属性文件
- Spring使用外部属性文件
- Spring中外部属性文件
- Spring使用外部属性文件
- spring-使用外部属性文件
- Spring 使用外部属性文件
- spring使用外部属性文件
- spring使用外部属性文件
- Spring学习笔记之使用外部属性文件
- spring学习笔记六 使用外部属性文件
- 程序学习第八天
- 学习的第八天
- Java学习第八天
- C#学习第八天
- ReLU函数简介
- IP数据报的分片与重组
- c_stdlib头文件
- wildcard 的理解
- 适配器模式 : 农村小伙娶乌克兰美女语言不通 翻译软件立功
- Spring学习第八天:调用外部属性文件
- 网站高并发高负载系统架构
- 寻迹小车——代码
- 升级了 beta 版 Xcode 8 和 beta 版 macOS,结果悲剧了
- extern, static, const 联系区别
- 随机森林(Random Forest)入门与实战
- Hdu-5886 Tower Defence(树形DP)
- leetcode刷题笔记-Reverse Integer
- STL迭代器