PropertyPlaceholderAutoConfigurationTests Class — spring-boot Architecture
Architecture documentation for the PropertyPlaceholderAutoConfigurationTests class in PropertyPlaceholderAutoConfigurationTests.java from the spring-boot codebase.
Entity Profile
Relationship Graph
Source Code
core/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/context/PropertyPlaceholderAutoConfigurationTests.java lines 42–135
class PropertyPlaceholderAutoConfigurationTests {
private final ApplicationContextRunner contextRunner = new ApplicationContextRunner();
@Test
void whenTheAutoConfigurationIsNotUsedThenBeanDefinitionPlaceholdersAreNotResolved() {
this.contextRunner.withPropertyValues("fruit:banana")
.withInitializer(this::definePlaceholderBean)
.run((context) -> assertThat(context.getBean(PlaceholderBean.class).fruit).isEqualTo("${fruit:apple}"));
}
@Test
void whenTheAutoConfigurationIsUsedThenBeanDefinitionPlaceholdersAreResolved() {
this.contextRunner.withPropertyValues("fruit:banana")
.withInitializer(this::definePlaceholderBean)
.withConfiguration(AutoConfigurations.of(PropertyPlaceholderAutoConfiguration.class))
.run((context) -> assertThat(context.getBean(PlaceholderBean.class).fruit).isEqualTo("banana"));
}
@Test
void whenTheAutoConfigurationIsNotUsedThenValuePlaceholdersAreResolved() {
this.contextRunner.withPropertyValues("fruit:banana")
.withUserConfiguration(PlaceholderConfig.class)
.run((context) -> assertThat(context.getBean(PlaceholderConfig.class).fruit).isEqualTo("banana"));
}
@Test
void whenTheAutoConfigurationIsUsedThenValuePlaceholdersAreResolved() {
this.contextRunner.withPropertyValues("fruit:banana")
.withConfiguration(AutoConfigurations.of(PropertyPlaceholderAutoConfiguration.class))
.withUserConfiguration(PlaceholderConfig.class)
.run((context) -> assertThat(context.getBean(PlaceholderConfig.class).fruit).isEqualTo("banana"));
}
@Test
void whenThereIsAUserDefinedPropertySourcesPlaceholderConfigurerThenItIsUsedForBeanDefinitionPlaceholderResolution() {
this.contextRunner.withPropertyValues("fruit:banana")
.withInitializer(this::definePlaceholderBean)
.withConfiguration(AutoConfigurations.of(PropertyPlaceholderAutoConfiguration.class))
.withUserConfiguration(PlaceholdersOverride.class)
.run((context) -> assertThat(context.getBean(PlaceholderBean.class).fruit).isEqualTo("orange"));
}
@Test
void whenThereIsAUserDefinedPropertySourcesPlaceholderConfigurerThenItIsUsedForValuePlaceholderResolution() {
this.contextRunner.withPropertyValues("fruit:banana")
.withConfiguration(AutoConfigurations.of(PropertyPlaceholderAutoConfiguration.class))
.withUserConfiguration(PlaceholderConfig.class, PlaceholdersOverride.class)
.run((context) -> assertThat(context.getBean(PlaceholderConfig.class).fruit).isEqualTo("orange"));
}
private void definePlaceholderBean(ConfigurableApplicationContext context) {
((BeanDefinitionRegistry) context.getBeanFactory()).registerBeanDefinition("placeholderBean",
BeanDefinitionBuilder.rootBeanDefinition(PlaceholderBean.class)
.addConstructorArgValue("${fruit:apple}")
.getBeanDefinition());
}
@Configuration(proxyBeanMethods = false)
static class PlaceholderConfig {
@Value("${fruit:apple}")
@SuppressWarnings("NullAway.Init")
private String fruit;
}
static class PlaceholderBean {
private final String fruit;
PlaceholderBean(String fruit) {
this.fruit = fruit;
}
}
@Configuration(proxyBeanMethods = false)
static class PlaceholdersOverride {
@Bean
static PropertySourcesPlaceholderConfigurer morePlaceholders() {
PropertySourcesPlaceholderConfigurer configurer = new PropertySourcesPlaceholderConfigurer();
Properties properties = StringUtils.splitArrayElementsIntoProperties(new String[] { "fruit=orange" }, "=");
assertThat(properties).isNotNull();
configurer.setProperties(properties);
configurer.setLocalOverride(true);
configurer.setOrder(0);
return configurer;
}
}
}
Domain
Source
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free