@Override
    public void bind(
            Map<String, Object> configurationProperties,
            boolean ignoreUnknownFields,
            boolean ignoreInvalidFields,
            Object configurationBean) {
        RelaxedDataBinder relaxedDataBinder = new RelaxedDataBinder(configurationBean);
        // Set ignored*
        relaxedDataBinder.setIgnoreInvalidFields(ignoreInvalidFields);
        relaxedDataBinder.setIgnoreUnknownFields(ignoreUnknownFields);
        // Get properties under specified prefix from PropertySources
        // Convert Map to MutablePropertyValues
        MutablePropertyValues propertyValues = new MutablePropertyValues(configurationProperties);
        // Bind
        relaxedDataBinder.bind(propertyValues);
    }
@Test
    public void testBinder() {

        ApplicationConfig applicationConfig = new ApplicationConfig();
        Map<String, Object> properties = getSubProperties(environment.getPropertySources(), "dubbo.application");
        dubboConfigBinder.bind(properties, true, true, applicationConfig);
        Assert.assertEquals("hello", applicationConfig.getName());
        Assert.assertEquals("world", applicationConfig.getOwner());

        RegistryConfig registryConfig = new RegistryConfig();
        properties = getSubProperties(environment.getPropertySources(), "dubbo.registry");
        dubboConfigBinder.bind(properties, true, true, registryConfig);
        Assert.assertEquals("10.20.153.17", registryConfig.getAddress());

        ProtocolConfig protocolConfig = new ProtocolConfig();
        properties = getSubProperties(environment.getPropertySources(), "dubbo.protocol");
        dubboConfigBinder.bind(properties, true, true, protocolConfig);
        Assert.assertEquals(Integer.valueOf(20881), protocolConfig.getPort());
    }