SpringMVC加载数据库的*.proties
来源:互联网 发布:windows phone 支付宝 编辑:程序博客网 时间:2024/06/17 20:35
spring同时集成Mysql和mongodb时遇到多个资源文件加载的问题
- 博客分类:
- spring
springignoreUnresolvablePlaceholdersPropertyPlaceholderConfigurercontext:property-placeholder
这两天平台中集成Mysql和mongodb遇到一个问题
单独集成Mysql和单独集成mongodb时都可以正常启动程序,但是当两个同时集成进去时就会报以下问题
- Could not resolve placeholder 'mongo.port' in string value "${mongo.port}
百思不得解后,经多方搜集查证,终于找到问题原因。
在spring的xml配置文件中当有多个*.properties文件需要加载时。
应该这样使用使用
- <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>
或者
- <context:property-placeholder location="classpath*:redis.properties" ignore-unresolvable="true" />
但是 ignore-unresolvable="true" 和 <property name="ignoreUnresolvablePlaceholders" value="true" /> 这两个属性值必须为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如果提供一个警告就好了)。
原文章中提到最后是把所有的资源文件中的资源放在一起加载
如下:
- #mongo的资源属性
- mongo.host=192.168.111.230
- mongo.port=40000
- mongo.connectionsPerHost=8
- mongo.threadsAllowedToBlockForConnectionMultiplier=4
- mongo.connectTimeout=1500
- mongo.maxWaitTime=1500
- mongo.autoConnectRetry=true
- mongo.socketKeepAlive=true
- mongo.socketTimeout=1500
- mongo.slaveOk=true
- mongo.write.number=1
- mongo.write.timeout=0
- mongo.write.fsync=true
- mongo.dbname=test
- #redis的资源属性
- redis.host=192.168.111.225
- redis.port=6379
- redis.pass=
- redis.maxIdle=300
- redis.maxTotal=600
- redis.minIdle=100
但是本人认为这样加载不利于系统的拆分,耦合较高。因此本人推荐还是使用单独加载每个子系统自己的资源文件最好,如:
- #mongo加载资源文件
- <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>
- #redis加载资源文件
- <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
- <property name="locations">
- <list>
- <value>classpath*:redis.properties</value>
- </list>
- </property>
- <property name="ignoreUnresolvablePlaceholders" value="true" />
- </bean>
只要保证ignoreUnresolvablePlaceholders都为true,或这最后一个加载的为false,之前的都为true即可。
参考地址:http://www.iteye.com/topic/1131688
0 0
- SpringMVC加载数据库的*.proties
- springmvc easyUI tree 动态加载数据库实现
- springmvc在启动工程的时候就访问数据库,加载一些共同的数据
- web服务刚启动时SpringMVC注解就加载一定的数据库数据进入内存中
- Java+SpringMVC中自实现定时加载更新数据库数据到内存的方法
- SpringMVC加载自定义目录下的springmvc.xml配置文件
- springmvc源码分析----入门看springmvc的加载过程
- springmvc源码分析----入门看springmvc的加载过程
- springmvc加载配置文件中的bean的方法
- SpringMVC之DispatcherServlet加载的默认配置。
- SpringMVC懒加载导致的问题一则
- Mysql数据库驱动程序的加载
- Java数据库驱动的加载
- 不同数据库驱动的加载
- 3.0springMVC+加入数据库的支持
- SpringMVC 与oracle数据库的交互
- springmvc+mybatis主从数据库的配置
- SpringMVC与底层数据库的交互
- Implement strStr()
- 码农创业记(二)
- springmvc 配置
- poi 遍历excel行列 读写文件 反射(动态调用方法) 下载 (测试代码)
- vs2012 打包部署出现3204和1014错误解决办法
- SpringMVC加载数据库的*.proties
- 程序“链接错误”浅析(1) —— "undefined reference error“ ”multiple definition of“
- xxxx
- Netty In Action中文版 - 第七章:编解码器Codec
- 光流法的介绍(含C++代码)
- 如何在模板判断
- 归并排序数组实现之递归和非递归方法
- R语言函数
- HTTP的报文格式、GET和POST格式解析