我已经和这个斗争了一段时间了。我用谷歌搜索并尝试了一些东西,但我发现的一切都无法解决我的问题。
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations" ref="propertiesLocations" />
<property name="searchSystemEnvironment" value="true" />
<property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE" />
</bean>
这就是我的属性位置。
<beans profile="">
<util:list id="propertiesLocations">
<value>classpath:com/lala/project/configuration/core.properties
</value>
<value>classpath*:com/lala/project/**/configuration/*.properties
</value>
<value>classpath*:com/lala/project/**/test/configuration/*.properties
</value>
<value>classpath*:project.properties
</value>
</util:list>
</beans>
<beans profile="test">
<util:list id="propertiesLocations">
<value>classpath:com/lala/project/configuration/core.properties
</value>
<value>classpath*:com/lala/project/**/configuration/*.properties
</value>
<value>classpath*:com/lala/project/**/test/configuration/*.properties
</value>
<value>classpath*:project-test.properties
</value>
<value>classpath*:project.properties
</value>
</util:list>
</beans>
<beans profile="testing">
<util:list id="propertiesLocations">
<value>classpath:com/lala/project/configuration/core.properties
</value>
<value>classpath*:com/lala/project/**/configuration/*.properties
</value> <!-- production properties -->
<value>classpath*:com/lala/project/**/test/configuration/*.properties <!-- test properties -->
</value>
<value>classpath*:project-testing.properties
</value>
<value>classpath*:project.properties
</value>
</util:list>
</beans>
然后,在我的一个子项目中,我有 2 个属性文件,我的“生产”属性在
src/main/resources/com/lala/project/subproject1/subprojectA/configuration/myProperties.properties
和我的“测试”属性
src/test/resources/com/lala/project/subproject1/subprojectA/test/configuration/myProperties.properties
显然,这些文件具有几乎相同的属性名称,但具有不同的值。我想知道的是为什么我在 subprojectA 中的测试不断选择我的“生产”属性而不是我的“测试”属性?换句话说,为什么 spring 不拿起我的“测试”属性并覆盖我的“生产属性”?
我忘了提到我不能简单地删除我的测试配置文件的“生产”属性位置,因为我需要来自其他项目、子项目的生产属性。