码迷,mamicode.com
首页 > 编程语言 > 详细

spring配置加载多个properties文件

时间:2017-08-26 11:24:28      阅读:326      评论:0      收藏:0      [点我收藏+]

标签:path   list   ati   配置   有一个   source   探测   log   cat   

(一)
首先,我们要先在spring配置文件中。定义一个专门读取properties文件的类.
例:

1 <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
2     <property name="locations">
3     <list>
4         <value>classpath*:jdbc.properties</value>
5         <!--要是有多个配置文件,只需在这里继续添加即可 -->
6     </list>
7     </property>
8 </bean>        

 



这里为什么用locations(还有一个location)
一般来说,我们的项目里面配置文件可能存在多个。
就算是只有一个,那将来新添加的话,只需在下面再加一个value标签即可,

而不必再重新改动太多。

(二) 使用 spring中 context:property-placeholder 
例: 

<context:property-placeholder location="classpath:data/mybatis.properties" /> 

但是不能加载多个properties文件,Spring容器采用反射扫描的发现机制,在探测到Spring容器中有一个 org.springframework.beans.factory.config.PropertyPlaceholderConfigurer的 Bean就会停止对剩余PropertyPlaceholderConfigurer的扫描(Spring 3.1已经使用PropertySourcesPlaceholderConfigurer替代 PropertyPlaceholderConfigurer了)。

换句话说,即Spring容器仅允许最多定义一个PropertyPlaceholderConfigurer(或),其余的会被Spring忽略掉(其实Spring如果提供一个警告就好了)。

拿上来的例子来说,如果A和B模块是单独运行的,由于Spring容器都只有一个PropertyPlaceholderConfigurer, 因此属性文件会被正常加载并替换掉。如果A和B两模块集成后运行,Spring容器中就有两个 PropertyPlaceholderConfigurer Bean了,这时就看谁先谁后了, 先的保留,后的忽略!因此,只加载到了一个属性文件,因而造成无法正确进行属性替换的问题.

解决方法:

1     <!-- 加载所有配置文件 -->
2     <context:property-placeholder location="classpath*:data/*.properties"/>
3     <!-- 还可以是下面方式,加载多个目录中的 -->
4     <context:property-placeholder location="classpath:*.properties,classpath:*/*.properties" /> 

 




spring配置加载多个properties文件

标签:path   list   ati   配置   有一个   source   探测   log   cat   

原文地址:http://www.cnblogs.com/linhaotown/p/7434534.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!