Spring中 context:property-placeholder 导入多个独立的 .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,这时就看加载的先后顺序,先的保留,后的忽略(其实是创建了两个PropertyPlaceholderConfigurer ,属性被第一个解析之后,第二个会继续解析第一个解析出来的值,因此得不到正确的结果)。因此,只加载到了一个属性文件,因而造成无法正确进行属性替换的问题。

解决办法

通配符