Support relaxed binding for properties before environment is prepared

Fixes gh-17843
This commit is contained in:
Madhura Bhave
2019-08-13 14:49:20 -07:00
parent fcf4680626
commit 3515ec1f29
3 changed files with 10 additions and 0 deletions

View File

@@ -338,6 +338,7 @@ public class SpringApplication {
// Create and configure the environment
ConfigurableEnvironment environment = getOrCreateEnvironment();
configureEnvironment(environment, applicationArguments.getSourceArgs());
ConfigurationPropertySources.attach(environment);
listeners.environmentPrepared(environment);
bindToSpringApplication(environment);
if (!this.isCustomEnvironment) {

View File

@@ -1072,6 +1072,14 @@ public class SpringApplicationTests {
.getBean("someBean")).isEqualTo("override");
}
@Test
public void relaxedBindingShouldWorkBeforeEnvironmentIsPrepared() {
SpringApplication application = new SpringApplication(ExampleConfig.class);
application.setWebApplicationType(WebApplicationType.NONE);
this.context = application.run("--spring.config.additionalLocation=classpath:custom-config/");
assertThat(this.context.getEnvironment().getProperty("hello")).isEqualTo("world");
}
private Condition<ConfigurableEnvironment> matchingPropertySource(final Class<?> propertySourceClass,
final String name) {
return new Condition<ConfigurableEnvironment>("has property source") {

View File

@@ -0,0 +1 @@
hello: world