diff --git a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/context/annotation/DubboConfigConfigurationRegistrar.java b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/context/annotation/DubboConfigConfigurationRegistrar.java index 79db7f4142..9924c00af8 100644 --- a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/context/annotation/DubboConfigConfigurationRegistrar.java +++ b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/context/annotation/DubboConfigConfigurationRegistrar.java @@ -18,6 +18,7 @@ package org.apache.dubbo.config.spring.context.annotation; import org.apache.dubbo.config.AbstractConfig; import org.apache.dubbo.config.spring.beans.factory.annotation.DubboConfigAliasPostProcessor; +import org.apache.dubbo.config.spring.context.config.NamePropertyDefaultValueDubboConfigBeanCustomizer; import org.springframework.beans.factory.support.BeanDefinitionRegistry; import org.springframework.context.annotation.ImportBeanDefinitionRegistrar; @@ -27,6 +28,7 @@ import org.springframework.core.type.AnnotationMetadata; import static com.alibaba.spring.util.AnnotatedBeanDefinitionRegistryUtils.registerBeans; import static com.alibaba.spring.util.BeanRegistrar.registerInfrastructureBean; +import static org.apache.dubbo.config.spring.context.config.NamePropertyDefaultValueDubboConfigBeanCustomizer.BEAN_NAME; /** * Dubbo {@link AbstractConfig Config} {@link ImportBeanDefinitionRegistrar register}, which order can be configured @@ -55,6 +57,14 @@ public class DubboConfigConfigurationRegistrar implements ImportBeanDefinitionRe // Register DubboConfigAliasPostProcessor registerDubboConfigAliasPostProcessor(registry); + + // Register NamePropertyDefaultValueDubboConfigBeanCustomizer + registerDubboConfigBeanCustomizers(registry); + + } + + private void registerDubboConfigBeanCustomizers(BeanDefinitionRegistry registry) { + registerInfrastructureBean(registry, BEAN_NAME, NamePropertyDefaultValueDubboConfigBeanCustomizer.class); } /** diff --git a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/context/config/DubboConfigBeanCustomizer.java b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/context/config/DubboConfigBeanCustomizer.java index 75bf0dd2eb..5588a33891 100644 --- a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/context/config/DubboConfigBeanCustomizer.java +++ b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/context/config/DubboConfigBeanCustomizer.java @@ -20,6 +20,7 @@ import org.apache.dubbo.config.AbstractConfig; import org.apache.dubbo.config.spring.beans.factory.annotation.DubboConfigBindingBeanPostProcessor; import org.apache.dubbo.config.spring.context.properties.DubboConfigBinder; +import com.alibaba.spring.context.config.ConfigurationBeanCustomizer; import org.springframework.context.ApplicationContext; import org.springframework.core.Ordered; @@ -35,7 +36,7 @@ import org.springframework.core.Ordered; * @see DubboConfigBindingBeanPostProcessor * @since 2.6.6 */ -public interface DubboConfigBeanCustomizer extends Ordered { +public interface DubboConfigBeanCustomizer extends ConfigurationBeanCustomizer, Ordered { /** * Customize {@link AbstractConfig Dubbo Config Bean} @@ -44,4 +45,11 @@ public interface DubboConfigBeanCustomizer extends Ordered { * @param dubboConfigBean the instance of {@link AbstractConfig Dubbo Config Bean} */ void customize(String beanName, AbstractConfig dubboConfigBean); + + @Override + default void customize(String beanName, Object configurationBean) { + if (configurationBean instanceof AbstractConfig) { + customize(beanName, (AbstractConfig) configurationBean); + } + } } diff --git a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/beans/factory/annotation/AnnotationPropertyValuesAdapterTest.java b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/beans/factory/annotation/AnnotationPropertyValuesAdapterTest.java index 15ceecc530..70f3a963a3 100644 --- a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/beans/factory/annotation/AnnotationPropertyValuesAdapterTest.java +++ b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/beans/factory/annotation/AnnotationPropertyValuesAdapterTest.java @@ -67,9 +67,19 @@ public class AnnotationPropertyValuesAdapterTest { DefaultConversionService conversionService = new DefaultConversionService(); - conversionService.addConverter((Converter) source -> arrayToCommaDelimitedString(source)); + conversionService.addConverter(new Converter() { + @Override + public String convert(String[] source) { + return arrayToCommaDelimitedString(source); + } + }); - conversionService.addConverter((Converter>) source -> CollectionUtils.toStringMap(source)); + conversionService.addConverter(new Converter>() { + @Override + public Map convert(String[] source) { + return CollectionUtils.toStringMap(source); + } + }); dataBinder.setConversionService(conversionService);