关于<context:property-placeholder>的一个有趣现象(聚合工程)
现在有两个模块A和B
A的配置文件如下:
B的配置文件如下:
问题就来了,单独运行A或者B模块的时候都能正常启动,但是A、B集成之后运行的话,spring容器就启动不了;
Could not resolve placeholder 'moduleb.jdbc.driverClassName' in string value "${moduleb.jdbc.driverClassName}"
在spring中扫描配置文件的是一个PropertyPlaceholderConfigurer对象,他在spring容器中默认只有一个,也就是说在A容器中创建了一个之后,B容器再去创建对象的请求就会被spring直接忽略掉;因而造成无法正确进行属性替换的问题。
解决方案:
一个项目或一个系统的配置应该放在一起。<context:property-placeholder locations="classpath*:*.properties" />即可。