diff --git a/spring-boot/src/main/java/org/springframework/boot/context/config/ConfigFileApplicationListener.java b/spring-boot/src/main/java/org/springframework/boot/context/config/ConfigFileApplicationListener.java index a1a2f5e7974..c655c1015ea 100644 --- a/spring-boot/src/main/java/org/springframework/boot/context/config/ConfigFileApplicationListener.java +++ b/spring-boot/src/main/java/org/springframework/boot/context/config/ConfigFileApplicationListener.java @@ -54,6 +54,7 @@ import org.springframework.core.io.DefaultResourceLoader; import org.springframework.core.io.Resource; import org.springframework.core.io.ResourceLoader; import org.springframework.util.Assert; +import org.springframework.util.ResourceUtils; import org.springframework.util.StringUtils; import org.springframework.validation.BindException; @@ -455,10 +456,10 @@ public class ConfigFileApplicationListener implements for (String path : asResolvedSet( this.environment.getProperty(CONFIG_LOCATION_PROPERTY), null)) { if (!path.contains("$")) { - if (!path.contains(":")) { - path = "file:" + path; - } path = StringUtils.cleanPath(path); + if (!ResourceUtils.isUrl(path)) { + path = ResourceUtils.FILE_URL_PREFIX + path; + } } locations.add(path); } diff --git a/spring-boot/src/test/java/org/springframework/boot/context/config/ConfigFileApplicationListenerTests.java b/spring-boot/src/test/java/org/springframework/boot/context/config/ConfigFileApplicationListenerTests.java index 7361b47faa3..4e0da0521e2 100644 --- a/spring-boot/src/test/java/org/springframework/boot/context/config/ConfigFileApplicationListenerTests.java +++ b/spring-boot/src/test/java/org/springframework/boot/context/config/ConfigFileApplicationListenerTests.java @@ -458,6 +458,16 @@ public class ConfigFileApplicationListenerTests { + location + "]")); } + @Test + public void absoluteResourceDefaultsToFile() throws Exception { + String location = new File("src/test/resources/specificlocation.properties").getAbsolutePath(); + EnvironmentTestUtils.addEnvironment(this.environment, "spring.config.location:" + + location); + this.initializer.onApplicationEvent(this.event); + assertThat(this.environment, containsPropertySource("applicationConfig: [file:" + + location.replace(File.separatorChar, '/') + "]")); + } + @Test public void propertySourceAnnotation() throws Exception { SpringApplication application = new SpringApplication(WithPropertySource.class);