<!-- If you need to report a security issue please visit https://github.com/apache/dubbo/security/policy -->

- [ ] I have searched the [issues](https://github.com/apache/dubbo/issues) of this repository and believe that this is not a duplicate.

## Describe the proposal
<!-- Please use this for a concrete design proposal for functionality. -->
<!-- If you just want to request a new feature and discuss the possible business value, create a Feature Request. -->

referenceBean.setConsumer(consumerConfig);
        }
    }
    private <T extends AbstractConfig> T getConfig(String configIdOrName, Class<T> configType) {
        
        T config = moduleModel.getConfigManager().getConfig(configType, configIdOrName).orElse(null);
        if (config == null) {
            
            if (applicationContext.containsBean(configIdOrName)) {
                config = applicationContext.getBean(configIdOrName, configType);
            }
        }
        if (config == null) {
            throw new IllegalArgumentException(configType.getSimpleName() + " not found: " + configIdOrName);
        }
        return config;
    }
    protected void populateBean(ReferenceConfig referenceConfig) {
        Assert.notNull(defaultInterfaceClass, "The default interface class cannot be empty!");
        
        ReferenceBeanSupport.convertReferenceProps(attributes, defaultInterfaceClass);
        DataBinder dataBinder = new DataBinder(referenceConfig);
        
        dataBinder.registerCustomEditor(String.class, "filter", new StringTrimmerEditor(true));
        dataBinder.registerCustomEditor(String.class, "listener", new StringTrimmerEditor(true));
        DefaultConversionService conversionService = new DefaultConversionService();
        
        conversionService.addConverter(String[].class, Map.class, DubboAnnotationUtils::convertParameters);
        
        conversionService.addConverter(Map.class, MethodConfig.class, source -> createMethodConfig(source, conversionService));