Change order of config file locations to be more natural

The most natural order is "more specific locations win". That way
if a use has application.properties in the root of a JAR (as is
normal), overrides can always be made on
classpath:/config/application.properties (as well as
file:./application.properties which has always been the case).

Before this change properties in classpath:/config/* were over
written by those in the root location, not the other way round.

Fixes gh-527
This commit is contained in:
Dave Syer 2014-03-19 10:52:12 +00:00
parent d6be3dfbb0
commit a47d5ccd44
4 changed files with 13 additions and 2 deletions

View File

@ -96,8 +96,8 @@ public class ConfigFileApplicationListener implements
private static final String CONFIG_LOCATION_PROPERTY = "spring.config.location";
private static final String DEFAULT_SEARCH_LOCATIONS = "file:./,file:./config/,"
+ "classpath:/,classpath:/config/";
private static final String DEFAULT_SEARCH_LOCATIONS = "file:./config/,file:./,"
+ "classpath:/config/,classpath:/";
private static final String DEFAULT_NAMES = "application";

View File

@ -133,6 +133,15 @@ public class ConfigFileApplicationListenerTests {
}
}
@Test
public void moreSpecificLocationTakesPrecedenceOverRoot() throws Exception {
EnvironmentTestUtils.addEnvironment(this.environment,
"spring.config.name:specific");
this.initializer.onApplicationEvent(this.event);
String property = this.environment.getProperty("my.property");
assertThat(property, equalTo("specific"));
}
@Test
public void loadTwoOfThreePropertiesFile() throws Exception {
EnvironmentTestUtils.addEnvironment(this.environment, "spring.config.location:"

View File

@ -0,0 +1 @@
my.property=specific

View File

@ -0,0 +1 @@
my.property=root