Skip to content

Commit 09fdb9d

Browse files
committed
Allow child context to override parent's configuration properties
Closes gh-41487
1 parent 12ec18f commit 09fdb9d

File tree

2 files changed

+4
-15
lines changed

2 files changed

+4
-15
lines changed

spring-boot-project/spring-boot/src/main/java/org/springframework/boot/context/properties/ConfigurationPropertiesBeanRegistrar.java

Lines changed: 3 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2012-2023 the original author or authors.
2+
* Copyright 2012-2024 the original author or authors.
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -17,7 +17,6 @@
1717
package org.springframework.boot.context.properties;
1818

1919
import org.springframework.beans.factory.BeanFactory;
20-
import org.springframework.beans.factory.HierarchicalBeanFactory;
2120
import org.springframework.beans.factory.ListableBeanFactory;
2221
import org.springframework.beans.factory.config.BeanDefinition;
2322
import org.springframework.beans.factory.support.BeanDefinitionRegistry;
@@ -68,18 +67,8 @@ private String getName(Class<?> type, MergedAnnotation<ConfigurationProperties>
6867
}
6968

7069
private boolean containsBeanDefinition(String name) {
71-
return containsBeanDefinition(this.beanFactory, name);
72-
}
73-
74-
private boolean containsBeanDefinition(BeanFactory beanFactory, String name) {
75-
if (beanFactory instanceof ListableBeanFactory listableBeanFactory
76-
&& listableBeanFactory.containsBeanDefinition(name)) {
77-
return true;
78-
}
79-
if (beanFactory instanceof HierarchicalBeanFactory hierarchicalBeanFactory) {
80-
return containsBeanDefinition(hierarchicalBeanFactory.getParentBeanFactory(), name);
81-
}
82-
return false;
70+
return (this.beanFactory instanceof ListableBeanFactory listableBeanFactory
71+
&& listableBeanFactory.containsBeanDefinition(name));
8372
}
8473

8574
private void registerBeanDefinition(String beanName, Class<?> type,

spring-boot-project/spring-boot/src/test/java/org/springframework/boot/context/properties/ConfigurationPropertiesTests.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -289,7 +289,7 @@ void loadWhenBindingWithParentContextShouldBind() {
289289
load(new Class<?>[] { BasicConfiguration.class, BasicPropertiesConsumer.class }, "name=child");
290290
assertThat(this.context.getBean(BasicProperties.class)).isNotNull();
291291
assertThat(parent.getBean(BasicProperties.class)).isNotNull();
292-
assertThat(this.context.getBean(BasicPropertiesConsumer.class).getName()).isEqualTo("parent");
292+
assertThat(this.context.getBean(BasicPropertiesConsumer.class).getName()).isEqualTo("child");
293293
parent.close();
294294
}
295295

0 commit comments

Comments
 (0)