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

### Environment

* Dubbo version: 2.7.5-SNAPSHOT
* Operating System version: macos
* Java version: 1.8.0_131

### Steps to reproduce this issue

We could run the following UT, then we could find the issue:

```
        ApplicationConfig application = new ApplicationConfig("provider");

        ServiceConfig<DemoService> service = new ServiceConfig<DemoService>();
        service.setProtocol(new ProtocolConfig("dubbo", 20880));
        service.setRegistry(new RegistryConfig(RegistryConfig.NO_AVAILABLE));
        service.setInterface(DemoService.class);
        service.setRef(new DemoServiceImpl());

        ConsumerConfig consumer = new ConsumerConfig();
        consumer.setLazy(true);

        ReferenceConfig<DemoService> reference = new ReferenceConfig<DemoService>();
        reference.setConsumer(consumer);
        reference.setRegistry(new RegistryConfig(RegistryConfig.NO_AVAILABLE));
        reference.setInterface(DemoService.class);
        reference.setUrl("dubbo://" + NetUtils.getLocalHost() + ":20880?" + DemoService.class.getName());

        DubboBootstrap bootstrap = DubboBootstrap.getInstance()
            .application(application)
            .service(service)
            .reference(reference)
            .start();

        Assert.assertEquals("true", reference.toUrls().get(0).getParameter("lazy"));
```

### Expected Result

Expected "lazy" : true

### Actual Result

Actual "lazy": false

}
        String key = getId(config);
        C existedConfig = configsMap.get(key);
        if (existedConfig != null && !config.equals(existedConfig)) {
            if (logger.isWarnEnabled()) {
                String type = config.getClass().getSimpleName();
                logger.warn(String.format("Duplicate %s found, there already has one default %s or more than two %ss have the same id, " +
                        "you can try to give each %s a different id : %s", type, type, type, type, config));
            }
        } else {
            configsMap.put(key, config);
        }
    }
    static <C extends AbstractConfig> String getId(C config) {
        String id = config.getId();
        return isNotEmpty(id) ? id : isDefaultConfig(config) ?
                config.getClass().getSimpleName() + "#" + DEFAULT_KEY : null;
    }
    static <C extends AbstractConfig> boolean isDefaultConfig(C config) {
        Boolean isDefault = getProperty(config, "default");
        return isDefault == null || TRUE.equals(isDefault);
    }
    static <C extends AbstractConfig> List<C> getDefaultConfigs(Map<String, C> configsMap) {
        return configsMap.values()
                .stream()
                .filter(ConfigManager::isDefaultConfig)
                .collect(Collectors.toList());
    }
}