Resolve placeholders in @ConfigurationProperties prefix
This commit is contained in:
@@ -289,6 +289,7 @@ public class ConfigurationPropertiesBindingPostProcessor implements BeanPostProc
|
||||
String targetName = (StringUtils.hasLength(annotation.value()) ? annotation
|
||||
.value() : annotation.prefix());
|
||||
if (StringUtils.hasLength(targetName)) {
|
||||
targetName = this.environment.resolvePlaceholders(targetName);
|
||||
factory.setTargetName(targetName);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -148,6 +148,16 @@ public class ConfigurationPropertiesBindingPostProcessorTests {
|
||||
equalTo("foo"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void placeholderInPrefix() throws Exception {
|
||||
this.context = new AnnotationConfigApplicationContext();
|
||||
EnvironmentTestUtils.addEnvironment(this.context, "foo:spam", "spam.foo:bar");
|
||||
this.context.register(PlaceholderPrefixConfiguration.class);
|
||||
this.context.refresh();
|
||||
assertThat(this.context.getBean(PlaceholderPrefixConfiguration.class).getFoo(),
|
||||
equalTo("bar"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void placeholderResolutionWithCustomLocation() throws Exception {
|
||||
this.context = new AnnotationConfigApplicationContext();
|
||||
@@ -373,6 +383,22 @@ public class ConfigurationPropertiesBindingPostProcessorTests {
|
||||
|
||||
}
|
||||
|
||||
@EnableConfigurationProperties
|
||||
@ConfigurationProperties(prefix = "${foo:bar}")
|
||||
public static class PlaceholderPrefixConfiguration {
|
||||
|
||||
private String foo;
|
||||
|
||||
public String getFoo() {
|
||||
return this.foo;
|
||||
}
|
||||
|
||||
public void setFoo(String foo) {
|
||||
this.foo = foo;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@EnableConfigurationProperties
|
||||
@ConfigurationProperties(locations = "custom-location.yml")
|
||||
public static class CustomConfigurationLocation {
|
||||
|
||||
Reference in New Issue
Block a user