Browse Source

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
pull/529/head
Dave Syer 12 years ago
parent
commit
a47d5ccd44
  1. 4
      spring-boot/src/main/java/org/springframework/boot/context/config/ConfigFileApplicationListener.java
  2. 9
      spring-boot/src/test/java/org/springframework/boot/context/config/ConfigFileApplicationListenerTests.java
  3. 1
      spring-boot/src/test/resources/config/specific.properties
  4. 1
      spring-boot/src/test/resources/specific.properties

4
spring-boot/src/main/java/org/springframework/boot/context/config/ConfigFileApplicationListener.java

@ -96,8 +96,8 @@ public class ConfigFileApplicationListener implements @@ -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";

9
spring-boot/src/test/java/org/springframework/boot/context/config/ConfigFileApplicationListenerTests.java

@ -133,6 +133,15 @@ public class ConfigFileApplicationListenerTests { @@ -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:"

1
spring-boot/src/test/resources/config/specific.properties

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

1
spring-boot/src/test/resources/specific.properties

@ -0,0 +1 @@ @@ -0,0 +1 @@
my.property=root
Loading…
Cancel
Save