Skip to content

Commit 3515ec1

Browse files
committed
Support relaxed binding for properties before environment is prepared
Fixes spring-projectsgh-17843
1 parent fcf4680 commit 3515ec1

File tree

3 files changed

+10
-0
lines changed

3 files changed

+10
-0
lines changed

spring-boot-project/spring-boot/src/main/java/org/springframework/boot/SpringApplication.java

+1
Original file line numberDiff line numberDiff line change
@@ -338,6 +338,7 @@ private ConfigurableEnvironment prepareEnvironment(SpringApplicationRunListeners
338338
// Create and configure the environment
339339
ConfigurableEnvironment environment = getOrCreateEnvironment();
340340
configureEnvironment(environment, applicationArguments.getSourceArgs());
341+
ConfigurationPropertySources.attach(environment);
341342
listeners.environmentPrepared(environment);
342343
bindToSpringApplication(environment);
343344
if (!this.isCustomEnvironment) {

spring-boot-project/spring-boot/src/test/java/org/springframework/boot/SpringApplicationTests.java

+8
Original file line numberDiff line numberDiff line change
@@ -1072,6 +1072,14 @@ public void beanDefinitionOverridingCanBeEnabled() {
10721072
.getBean("someBean")).isEqualTo("override");
10731073
}
10741074

1075+
@Test
1076+
public void relaxedBindingShouldWorkBeforeEnvironmentIsPrepared() {
1077+
SpringApplication application = new SpringApplication(ExampleConfig.class);
1078+
application.setWebApplicationType(WebApplicationType.NONE);
1079+
this.context = application.run("--spring.config.additionalLocation=classpath:custom-config/");
1080+
assertThat(this.context.getEnvironment().getProperty("hello")).isEqualTo("world");
1081+
}
1082+
10751083
private Condition<ConfigurableEnvironment> matchingPropertySource(final Class<?> propertySourceClass,
10761084
final String name) {
10771085
return new Condition<ConfigurableEnvironment>("has property source") {
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
hello: world

0 commit comments

Comments
 (0)