问题出现
之前学习spring整合redis,spring整合activemq,单独测试没有问题。后来想把他们一起部署启动,结果报错
查找原因
查了一会找到了原因。因为我的spring-redis.xml和spring-activemq.xml都写了一个
而Spring容器采用反射扫描的发现机制,在探测到Spring容器中有一个org.springframework.beans.factory.config.PropertyPlaceholderConfigurer的Bean就会停止对剩余PropertyPlaceholderConfigurer的扫描。
而
这样的话,其实就只加载了第一个properties文件,后面的并没有加载,自然也就找不到’redis.maxTotal’了。
尝试解决
按照网上的办法,去掉每个xml单独的context:property-placeholder,再写一个xml文件一次性加载所有资源文件,并引入之前单独的所有xml文件。
先将web文件的
改为
编写这个applicationContext.xml如下:
这样部署启动应该就可以了。
新的问题
按道理应该启动成功,不过我这里又遇到另一个问题
再查原因
查看自己的spring-redis.xml
并没有需要’javax.jms.ConnectionFactory’,根据问题在网上搜索,在一篇博客看到了’redis也有个bean叫connectionFactory’的字眼。于是想到自己应该也是bean name重复了。查看spring-activemq.xml
解决问题
问题就很明显了,spring-redis.xml和spring-activemq.xml都有connectionFactory这个bean。于是修改了spring-redis.xml中的bean name
再次部署启动,OK。
参考博客:http://www.iteye.com/topic/1131688
http://blog.csdn.net/AlbertFly/article/details/51503079