有道云笔记地址:http://note.youdao.com/yws/public/redirect/share?id=7826aadd35f252f89dbccfb26e83e316&type=false
项目中mybatis 和mongo 是俩个不同的xml配置文件,
mybatis 配置:
<context:property-placeholder location="classpath:db-mybatis.properties" />
mongo 配置
<context:property-placeholder location="classpath:db-mongo.properties" />
在用通配符配置属性的时候发现,mongo的配置文件中的通配符找不到属性,经过多方查证,多个xml需要各自加载属性文件需要加个参数ignore-unresolvable="true"
这样子:
<context:property-placeholder location="classpath:db-mybatis.properties" ignore-unresolvable="true"/>
<context:property-placeholder location="classpath:db-mongo.properties" ignore-unresolvable="true" />
或者是:
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath*:mongodb.properties</value>
</list>
</property>
<property name="ignoreUnresolvablePlaceholders" value="true" />
</bean>
要保证最后一个加载的配置文件之前的都要添加参数ignore-unresolvable="true"
原因如下:
Spring容器采用反射扫描的发现机制,在探测到Spring容器中有一个org.springframework.beans.factory.config.PropertyPlaceholderConfigurer的Bean就会停止对剩余PropertyPlaceholderConfigurer的扫描(Spring 3.1已经使用PropertySourcesPlaceholderConfigurer替代PropertyPlaceholderConfigurer了)。
而<context:property-placeholder/>这个基于命名空间的配置,其实内部就是创建一个PropertyPlaceholderConfigurer Bean而已。换句话说,即Spring容器仅允许最多定义一个PropertyPlaceholderConfigurer(或<context:property-placeholder/>),其余的会被Spring忽略掉(其实Spring如果提供一个警告就好了)。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于