@Value not set via Java-configured test context
With Spring 4, it's now possible to use TestPropertySource:
@TestPropertySource(value="classpath:/config/test.properties")
In order to load specific properties for a junit test
In addition to Biju Kunjummen answer:
If you use @ConfigurationProperties to inject properties into bean setters, then ConfigurationPropertiesBindingPostProcessor need to be created (instead of PropertySourcesPlaceholderConfigurer):
@Configuration
static class PropertyConfig {
@Bean
public static ConfigurationPropertiesBindingPostProcessor propertiesProcessor() {
return new ConfigurationPropertiesBindingPostProcessor();
}
}
The issue here is you need a PropertySourcesPlaceholderConfigurer
also which is actually responsible for resolving the ${..}
fields, just add another bean which creates this bean:
@Bean
public static PropertySourcesPlaceholderConfigurer propertiesResolver() {
return new PropertySourcesPlaceholderConfigurer();
}