mirror of
https://github.com/spring-projects/spring-boot.git
synced 2024-09-03 04:26:12 +08:00
Applying RelaxedNames before filtering PropertySources
... to allow for OS_VAR to be bound to a @ConfigurationPropertes("os") class with field "var". Fixes gh-387, Fixes gh-391
This commit is contained in:
parent
1f69ef69cb
commit
b7802f98bb
@ -253,17 +253,16 @@ public class PropertiesConfigurationFactory<T> implements FactoryBean<T>,
|
||||
if (this.target != null) {
|
||||
PropertyDescriptor[] descriptors = BeanUtils
|
||||
.getPropertyDescriptors(this.target.getClass());
|
||||
String[] prefixes = this.targetName != null ? new String[] {
|
||||
this.targetName + ".", this.targetName + "_" } : new String[] { "" };
|
||||
String prefix = this.targetName != null ? this.targetName + "." : "";
|
||||
String[] suffixes = new String[] { ".*", "_*" };
|
||||
for (PropertyDescriptor descriptor : descriptors) {
|
||||
String name = descriptor.getName();
|
||||
if (!name.equals("class")) {
|
||||
for (String prefix : prefixes) {
|
||||
names.add(prefix + name);
|
||||
patterns.add(prefix + name);
|
||||
for(String relaxedName : new RelaxedNames(prefix + name)) {
|
||||
names.add(relaxedName);
|
||||
patterns.add(relaxedName);
|
||||
for (String suffix : suffixes) {
|
||||
patterns.add(prefix + name + suffix);
|
||||
patterns.add(relaxedName + suffix);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -101,6 +101,16 @@ public class EnableConfigurationPropertiesTests {
|
||||
assertEquals("bar", this.context.getBean(NestedProperties.class).nested.name);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testNestedOsEnvironmentVariableWithUnderscore() {
|
||||
EnvironmentTestUtils.addEnvironment(this.context, "NAME:foo", "NESTED_NAME:bar");
|
||||
this.context.register(NestedConfiguration.class);
|
||||
this.context.refresh();
|
||||
assertEquals(1, this.context.getBeanNamesForType(NestedProperties.class).length);
|
||||
assertEquals("foo", this.context.getBean(NestedProperties.class).name);
|
||||
assertEquals("bar", this.context.getBean(NestedProperties.class).nested.name);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testStrictPropertiesBinding() {
|
||||
removeSystemProperties();
|
||||
@ -122,6 +132,16 @@ public class EnableConfigurationPropertiesTests {
|
||||
assertEquals("foo", this.context.getBean(TestProperties.class).name);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testOsEnvironmentVariableEmbeddedBinding() {
|
||||
EnvironmentTestUtils.addEnvironment(this.context, "SPRING_FOO_NAME:foo");
|
||||
this.context.register(EmbeddedTestConfiguration.class);
|
||||
this.context.refresh();
|
||||
assertEquals(1,
|
||||
this.context.getBeanNamesForType(EmbeddedTestProperties.class).length);
|
||||
assertEquals("foo", this.context.getBean(TestProperties.class).name);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testIgnoreNestedPropertiesBinding() {
|
||||
removeSystemProperties();
|
||||
|
Loading…
Reference in New Issue
Block a user