Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

using ConfigFileApplicationContextInitializer does not resolve default values for @Value

Tags:

spring-boot

When I am using:

@ContextConfiguration(classes = { DmiVehicleRTExportConfig.class },
  initializers = ConfigFileApplicationContextInitializer.class)

my integration tests are failing as properties such as:

${oauth2client.prematureTimeout:600}

are not getting default value of 600.

This is resolved through using: SpringApplicationConfiguration but I want to use ConfigFileApplicationContextInitializer.class instead of SpringApplicationConfiguration.

Thanks.

like image 731
prateek Avatar asked Oct 14 '25 18:10

prateek


1 Answers

I had the same issue. PropertySourcesPlaceholderConfigurer.class needs to be added:

@ContextConfiguration(classes = { DmiVehicleRTExportConfig.class, 
                           PropertySourcesPlaceholderConfigurer.class },
initializers = ConfigFileApplicationContextInitializer.class)

Spring team has just added a note about that:

Using ConfigFileApplicationContextInitializer alone won’t provide support for @Value("${…​}") injection. Its only job is to ensure that application.properties files are loaded into Spring’s Environment. For @Value support you need to either additionally configure a PropertySourcesPlaceholderConfigurer or use @SpringBootTest where one will be auto-configured for you.

like image 153
ctranxuan Avatar answered Oct 19 '25 22:10

ctranxuan



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!