-
Notifications
You must be signed in to change notification settings - Fork 38.9k
Description
Overview
DynamicPropertyRegistry was introduced in conjunction with the @DynamicPropertySource support in the TestContext framework. For such use cases, a static method within a test class must be annotated with @DynamicPropertySource, and a DynamicPropertyRegistry will be supplied as a method argument.
However, it can also be useful to be able to register a "dynamic property" from within a test's ApplicationContext -- for example, in a @Bean method in a @Configuration class that is specific to testing scenarios.
In light of that, we will register DynamicPropertyRegistry as a singleton bean in a test's ApplicationContext. That will allow DynamicPropertyRegistry to be autowired into a @Configuration class or supplied to a @Bean method as a method argument as shown in the following example.
@Bean
ApiServer apiServer(DynamicPropertyRegistry registry) {
ApiServer apiServer = new ApiServer();
registry.add("api.url", apiServer::getUrl);
return apiServer;
}In order to address the @DependsOn concern raised in #32209, we are considering allowing @DynamicPropertySource to be applied to @Bean methods to indicate that the corresponding bean should be eagerly initialized within the test's ApplicationContext.