(八)spring_使用外部属性文件

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

这里以数据源为例,使用spring自带的数据源配置,首先在xml文件中配置
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
		<property name="username" value="root" ></property>
		<property name="password" value="123"></property>
		<property name="driverClassName" value="com.mysql.jdbc.Driver" ></property>
		<property name="url" value="jdbc:msyql:///test"></property>			
</bean>
上面是不使用外部属性文件的配置


使用外部属性文件的步骤
如果使用了外部属性配置,那么需要在类路径下添加一个属性文件以".properties"结尾,那么我们命名为db.properties,其编写风格如下
jdbc.user=root
jdbc.password=123
jdbc.driverClass=com.mysql.jdbc.Driver
jdbc.jdbcUrl=jdbc:mysql:///test
url的配置中最好在test后面添加
?useUnicode=true&characterEncoding=UTF-8
这样减少出现乱码问题

新的配置文件中应该使用类似于EL表达式的方式在value属性中添加值
同时在applicationContext.xml文件中也要加载db.properties文件,所以需要在配置文件中添加这样一段代码
<!-- 导入资源文件 -->
<context:property-placeholder location="classpath:db.properties" />
默认数据源的配置
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
		<property name="username" value="${jdbc.user}" ></property>
		<property name="password" value="${jdbc.password}"></property>
		<property name="driverClassName" value="${jdbc.driverClass}" ></property>
		<property name="url" value="${jdbc.jdbcUrl}"></property>			
</bean>
这样一个以spring自带数据源的属性文件已经配置好了,但是使用C3P0的数据源配置有所不同,主要是定义的name属性中值不同。
c3p0的配置
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
		<property name="user" value="${jdbc.user}" ></property>
		<property name="password" value="${jdbc.password}"></property>
		<property name="driverClass" value="${jdbc.driverClass}" ></property>
		<property name="jdbcurl" value="${jdbc.jdbcUrl}"></property>			
</bean>

所以在配置数据源的时候要注意这两种的配置区别



展开阅读全文

没有更多推荐了,返回首页