Make DynamicPropertyRegistrarBeanInitializer public
In order to allow third parties (for example, Spring Boot) to ensure that a DynamicPropertyRegistrarBeanInitializer has been registered in an ApplicationContext which has not been customized by the DynamicPropertiesContextCustomizer, this commit converts DynamicPropertyRegistrarBeanInitializer to a public API for use in such special use cases. Closes gh-33593
This commit is contained in:
parent
b4bfb8952c
commit
e55fe9077f
|
|
@ -50,10 +50,6 @@ import org.springframework.util.ReflectionUtils;
|
|||
*/
|
||||
class DynamicPropertiesContextCustomizer implements ContextCustomizer {
|
||||
|
||||
private static final String DYNAMIC_PROPERTY_REGISTRAR_BEAN_INITIALIZER_BEAN_NAME =
|
||||
DynamicPropertiesContextCustomizer.class.getName() + ".dynamicPropertyRegistrarBeanInitializer";
|
||||
|
||||
|
||||
private final Set<Method> methods;
|
||||
|
||||
|
||||
|
|
@ -70,11 +66,10 @@ class DynamicPropertiesContextCustomizer implements ContextCustomizer {
|
|||
throw new IllegalStateException("BeanFactory must be a BeanDefinitionRegistry");
|
||||
}
|
||||
|
||||
if (!beanDefinitionRegistry.containsBeanDefinition(DYNAMIC_PROPERTY_REGISTRAR_BEAN_INITIALIZER_BEAN_NAME)) {
|
||||
if (!beanDefinitionRegistry.containsBeanDefinition(DynamicPropertyRegistrarBeanInitializer.BEAN_NAME)) {
|
||||
BeanDefinition beanDefinition = new RootBeanDefinition(DynamicPropertyRegistrarBeanInitializer.class);
|
||||
beanDefinition.setRole(BeanDefinition.ROLE_INFRASTRUCTURE);
|
||||
beanDefinitionRegistry.registerBeanDefinition(
|
||||
DYNAMIC_PROPERTY_REGISTRAR_BEAN_INITIALIZER_BEAN_NAME, beanDefinition);
|
||||
beanDefinitionRegistry.registerBeanDefinition(DynamicPropertyRegistrarBeanInitializer.BEAN_NAME, beanDefinition);
|
||||
}
|
||||
|
||||
if (!this.methods.isEmpty()) {
|
||||
|
|
|
|||
|
|
@ -30,16 +30,24 @@ import org.springframework.test.context.DynamicPropertyRegistrar;
|
|||
import org.springframework.test.context.DynamicPropertyRegistry;
|
||||
|
||||
/**
|
||||
* Internal component which eagerly initializes {@link DynamicPropertyRegistrar}
|
||||
* {@link BeanFactoryInitializer} that eagerly initializes {@link DynamicPropertyRegistrar}
|
||||
* beans.
|
||||
*
|
||||
* <p>Primarily intended for internal use within the Spring TestContext Framework.
|
||||
*
|
||||
* @author Sam Brannen
|
||||
* @since 6.2
|
||||
*/
|
||||
class DynamicPropertyRegistrarBeanInitializer implements BeanFactoryInitializer<ListableBeanFactory>, EnvironmentAware {
|
||||
public class DynamicPropertyRegistrarBeanInitializer implements BeanFactoryInitializer<ListableBeanFactory>, EnvironmentAware {
|
||||
|
||||
private static final Log logger = LogFactory.getLog(DynamicPropertyRegistrarBeanInitializer.class);
|
||||
|
||||
/**
|
||||
* The bean name of the internally managed {@code DynamicPropertyRegistrarBeanInitializer}.
|
||||
*/
|
||||
static final String BEAN_NAME =
|
||||
"org.springframework.test.context.support.internalDynamicPropertyRegistrarBeanInitializer";
|
||||
|
||||
|
||||
@Nullable
|
||||
private ConfigurableEnvironment environment;
|
||||
|
|
|
|||
Loading…
Reference in New Issue