From 70f3b0eb91ee21319aef3d479776d7c25823466a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Nicoll?= Date: Mon, 29 Jul 2024 09:30:27 +0200 Subject: [PATCH] Only register DynamicPropertySourceBeanInitializer if necessary This commit makes sure to check first if DynamicPropertySourceBeanInitializer has been registered before trying to register it. When running with AOT optimizations, the bean definition has been contributed so there is no need to register it again when the context customizer runs. Closes gh-33272 --- .../support/DynamicPropertiesContextCustomizer.java | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/spring-test/src/main/java/org/springframework/test/context/support/DynamicPropertiesContextCustomizer.java b/spring-test/src/main/java/org/springframework/test/context/support/DynamicPropertiesContextCustomizer.java index f2ebdd1c23..156d51eeab 100644 --- a/spring-test/src/main/java/org/springframework/test/context/support/DynamicPropertiesContextCustomizer.java +++ b/spring-test/src/main/java/org/springframework/test/context/support/DynamicPropertiesContextCustomizer.java @@ -78,10 +78,12 @@ class DynamicPropertiesContextCustomizer implements ContextCustomizer { new DefaultDynamicPropertyRegistry(environment, this.methods.isEmpty()); beanFactory.registerSingleton(DYNAMIC_PROPERTY_REGISTRY_BEAN_NAME, dynamicPropertyRegistry); - BeanDefinition beanDefinition = new RootBeanDefinition(DynamicPropertySourceBeanInitializer.class); - beanDefinition.setRole(BeanDefinition.ROLE_INFRASTRUCTURE); - beanDefinitionRegistry.registerBeanDefinition( - DYNAMIC_PROPERTY_SOURCE_BEAN_INITIALIZER_BEAN_NAME, beanDefinition); + if (!beanDefinitionRegistry.containsBeanDefinition(DYNAMIC_PROPERTY_SOURCE_BEAN_INITIALIZER_BEAN_NAME)) { + BeanDefinition beanDefinition = new RootBeanDefinition(DynamicPropertySourceBeanInitializer.class); + beanDefinition.setRole(BeanDefinition.ROLE_INFRASTRUCTURE); + beanDefinitionRegistry.registerBeanDefinition( + DYNAMIC_PROPERTY_SOURCE_BEAN_INITIALIZER_BEAN_NAME, beanDefinition); + } if (!this.methods.isEmpty()) { MutablePropertySources propertySources = environment.getPropertySources();