From ba82fec3996d9c001439d47906bbc60482f64f7a Mon Sep 17 00:00:00 2001 From: liaozan <378024053@qq.com> Date: Thu, 22 Sep 2022 08:22:44 +0800 Subject: [PATCH] Add overloaded shortcut method to register BeanDefinition (#4574) * Add overloaded shortcut method to register BeanDefinition * Add unit test in BeanRegistrationUtilTest * Add more unit test for BeanRegistrationUtil * Add change log item --- CHANGES.md | 3 ++- .../DefaultApolloConfigRegistrarHelper.java | 21 +++++++------------ ...tConfigPropertySourcesProcessorHelper.java | 15 ++++++------- .../spring/util/BeanRegistrationUtil.java | 14 ++++++++++--- .../spring/util/BeanRegistrationUtilTest.java | 18 +++++++++++++--- 5 files changed, 42 insertions(+), 29 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index 62dca940d55..1a442d99373 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -33,6 +33,7 @@ Apollo 2.1.0 * [fix openapi item with url illegalKey 400 error](https://github.com/apolloconfig/apollo/pull/4549) * [fix the exception occurred when publish/rollback namespaces with grayrelease](https://github.com/apolloconfig/apollo/pull/4564) * [fix create namespace with single dot 500 error](https://github.com/apolloconfig/apollo/pull/4568) +* [Add overloaded shortcut method to register BeanDefinition](https://github.com/apolloconfig/apollo/pull/4574) ------------------ -All issues and pull requests are [here](https://github.com/apolloconfig/apollo/milestone/11?closed=1) +All issues and pull requests are [here](https://github.com/apolloconfig/apollo/milestone/11?closed=1) \ No newline at end of file diff --git a/apollo-client/src/main/java/com/ctrip/framework/apollo/spring/spi/DefaultApolloConfigRegistrarHelper.java b/apollo-client/src/main/java/com/ctrip/framework/apollo/spring/spi/DefaultApolloConfigRegistrarHelper.java index ec8af35073c..8bd2b7610ef 100644 --- a/apollo-client/src/main/java/com/ctrip/framework/apollo/spring/spi/DefaultApolloConfigRegistrarHelper.java +++ b/apollo-client/src/main/java/com/ctrip/framework/apollo/spring/spi/DefaultApolloConfigRegistrarHelper.java @@ -54,18 +54,13 @@ public void registerBeanDefinitions(AnnotationMetadata importingClassMetadata, B // to make sure the default PropertySourcesPlaceholderConfigurer's priority is higher than PropertyPlaceholderConfigurer propertySourcesPlaceholderPropertyValues.put("order", 0); - BeanRegistrationUtil.registerBeanDefinitionIfNotExists(registry, PropertySourcesPlaceholderConfigurer.class.getName(), - PropertySourcesPlaceholderConfigurer.class, propertySourcesPlaceholderPropertyValues); - BeanRegistrationUtil.registerBeanDefinitionIfNotExists(registry, - AutoUpdateConfigChangeListener.class.getName(), AutoUpdateConfigChangeListener.class); - BeanRegistrationUtil.registerBeanDefinitionIfNotExists(registry, PropertySourcesProcessor.class.getName(), - PropertySourcesProcessor.class); - BeanRegistrationUtil.registerBeanDefinitionIfNotExists(registry, ApolloAnnotationProcessor.class.getName(), - ApolloAnnotationProcessor.class); - BeanRegistrationUtil.registerBeanDefinitionIfNotExists(registry, SpringValueProcessor.class.getName(), - SpringValueProcessor.class); - BeanRegistrationUtil.registerBeanDefinitionIfNotExists(registry, SpringValueDefinitionProcessor.class.getName(), - SpringValueDefinitionProcessor.class); + BeanRegistrationUtil.registerBeanDefinitionIfNotExists(registry, PropertySourcesPlaceholderConfigurer.class, + propertySourcesPlaceholderPropertyValues); + BeanRegistrationUtil.registerBeanDefinitionIfNotExists(registry, AutoUpdateConfigChangeListener.class); + BeanRegistrationUtil.registerBeanDefinitionIfNotExists(registry, PropertySourcesProcessor.class); + BeanRegistrationUtil.registerBeanDefinitionIfNotExists(registry, ApolloAnnotationProcessor.class); + BeanRegistrationUtil.registerBeanDefinitionIfNotExists(registry, SpringValueProcessor.class); + BeanRegistrationUtil.registerBeanDefinitionIfNotExists(registry, SpringValueDefinitionProcessor.class); } private String[] resolveNamespaces(String[] namespaces) { @@ -102,4 +97,4 @@ public int getOrder() { public void setEnvironment(Environment environment) { this.environment = environment; } -} +} \ No newline at end of file diff --git a/apollo-client/src/main/java/com/ctrip/framework/apollo/spring/spi/DefaultConfigPropertySourcesProcessorHelper.java b/apollo-client/src/main/java/com/ctrip/framework/apollo/spring/spi/DefaultConfigPropertySourcesProcessorHelper.java index a04f5ae7678..51dc7697cf9 100644 --- a/apollo-client/src/main/java/com/ctrip/framework/apollo/spring/spi/DefaultConfigPropertySourcesProcessorHelper.java +++ b/apollo-client/src/main/java/com/ctrip/framework/apollo/spring/spi/DefaultConfigPropertySourcesProcessorHelper.java @@ -36,14 +36,11 @@ public void postProcessBeanDefinitionRegistry(BeanDefinitionRegistry registry) t // to make sure the default PropertySourcesPlaceholderConfigurer's priority is higher than PropertyPlaceholderConfigurer propertySourcesPlaceholderPropertyValues.put("order", 0); - BeanRegistrationUtil.registerBeanDefinitionIfNotExists(registry, PropertySourcesPlaceholderConfigurer.class.getName(), - PropertySourcesPlaceholderConfigurer.class, propertySourcesPlaceholderPropertyValues); - BeanRegistrationUtil.registerBeanDefinitionIfNotExists(registry, - AutoUpdateConfigChangeListener.class.getName(), AutoUpdateConfigChangeListener.class); - BeanRegistrationUtil.registerBeanDefinitionIfNotExists(registry, ApolloAnnotationProcessor.class.getName(), - ApolloAnnotationProcessor.class); - BeanRegistrationUtil.registerBeanDefinitionIfNotExists(registry, SpringValueProcessor.class.getName(), - SpringValueProcessor.class); + BeanRegistrationUtil.registerBeanDefinitionIfNotExists(registry, PropertySourcesPlaceholderConfigurer.class, + propertySourcesPlaceholderPropertyValues); + BeanRegistrationUtil.registerBeanDefinitionIfNotExists(registry, AutoUpdateConfigChangeListener.class); + BeanRegistrationUtil.registerBeanDefinitionIfNotExists(registry, ApolloAnnotationProcessor.class); + BeanRegistrationUtil.registerBeanDefinitionIfNotExists(registry, SpringValueProcessor.class); processSpringValueDefinition(registry); } @@ -63,4 +60,4 @@ private void processSpringValueDefinition(BeanDefinitionRegistry registry) { public int getOrder() { return Ordered.LOWEST_PRECEDENCE; } -} +} \ No newline at end of file diff --git a/apollo-client/src/main/java/com/ctrip/framework/apollo/spring/util/BeanRegistrationUtil.java b/apollo-client/src/main/java/com/ctrip/framework/apollo/spring/util/BeanRegistrationUtil.java index 079c366b63f..46044957def 100644 --- a/apollo-client/src/main/java/com/ctrip/framework/apollo/spring/util/BeanRegistrationUtil.java +++ b/apollo-client/src/main/java/com/ctrip/framework/apollo/spring/util/BeanRegistrationUtil.java @@ -39,8 +39,17 @@ public class BeanRegistrationUtil { ); } + public static boolean registerBeanDefinitionIfNotExists(BeanDefinitionRegistry registry, Class beanClass) { + return registerBeanDefinitionIfNotExists(registry, beanClass, null); + } + + public static boolean registerBeanDefinitionIfNotExists(BeanDefinitionRegistry registry, Class beanClass, + Map extraPropertyValues) { + return registerBeanDefinitionIfNotExists(registry, beanClass.getName(), beanClass, extraPropertyValues); + } + public static boolean registerBeanDefinitionIfNotExists(BeanDefinitionRegistry registry, String beanName, - Class beanClass) { + Class beanClass) { return registerBeanDefinitionIfNotExists(registry, beanName, beanClass, null); } @@ -80,5 +89,4 @@ public static boolean registerBeanDefinitionIfNotExists(BeanDefinitionRegistry r return true; } - -} +} \ No newline at end of file diff --git a/apollo-client/src/test/java/com/ctrip/framework/apollo/spring/util/BeanRegistrationUtilTest.java b/apollo-client/src/test/java/com/ctrip/framework/apollo/spring/util/BeanRegistrationUtilTest.java index 6a63ea909fc..98a3a2e285d 100644 --- a/apollo-client/src/test/java/com/ctrip/framework/apollo/spring/util/BeanRegistrationUtilTest.java +++ b/apollo-client/src/test/java/com/ctrip/framework/apollo/spring/util/BeanRegistrationUtilTest.java @@ -50,7 +50,6 @@ public void registerBeanDefinitionIfNotExistsTest() { getClass(), null)); assertFalse(BeanRegistrationUtil.registerBeanDefinitionIfNotExists(someRegistry, someBeanName, getClass())); - } @Test @@ -58,7 +57,6 @@ public void registerBeanDefinitionIfNotExistsBeanNotPresentTest() { someRegistry.registerBeanDefinition("someAnotherBean", Mockito.mock(BeanDefinition.class)); assertTrue(BeanRegistrationUtil.registerBeanDefinitionIfNotExists(someRegistry, someBeanName, getClass(), null)); - } @Test @@ -68,7 +66,21 @@ public void registerBeanDefinitionIfNotExistsWithExtPropTest() { extraPropertyValues.put(someBeanName, "someProperty"); assertTrue(BeanRegistrationUtil.registerBeanDefinitionIfNotExists(someRegistry, someBeanName, getClass(), extraPropertyValues)); + } + @Test + public void registerBeanDefinitionIfNotExistsWithoutBeanNameTest() { + someRegistry.registerBeanDefinition(BeanDefinition.class.getName(), Mockito.mock(BeanDefinition.class)); + assertFalse(BeanRegistrationUtil.registerBeanDefinitionIfNotExists(someRegistry, BeanDefinition.class)); + } + + @Test + public void registerBeanDefinitionIfNotExistsWithoutBeanNameWithExtPropTest() { + Map extraPropertyValues = new ConcurrentHashMap<>(); + extraPropertyValues.put(someBeanName, "someProperty"); + someRegistry.registerBeanDefinition(BeanDefinition.class.getName(), Mockito.mock(BeanDefinition.class)); + assertFalse(BeanRegistrationUtil.registerBeanDefinitionIfNotExists(someRegistry, BeanDefinition.class, + extraPropertyValues)); } -} +} \ No newline at end of file