nacos-group / nacos-spring-boot-project

Nacos ECO Project for Spring Boot
Apache License 2.0
789 stars 424 forks source link

ext-config 中配置无法单独生效 #329

Open xieshenace opened 5 months ago

xieshenace commented 5 months ago
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.6.7</version>
    <relativePath/> <!-- lookup parent from repository -->
  </parent>
<dependency>
    <groupId>com.alibaba.boot</groupId>
    <artifactId>nacos-config-spring-boot-starter</artifactId>
    <version>0.2.12</version>
  </dependency>
  <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-configuration-processor</artifactId>
  </dependency>
image image

可以获取到; 但是:

image

必须要在根目录有data-id后,才能再ext-config 中配置其他配置;

我的需求是:会有不同组的不统配置,但是这样就不能完全写在ext-config中了。

fishandsheep commented 3 months ago

看代码根目录data-iddata-ids必须定义其中一个,否则报错,建议nacos配置中心定义一个根目录下的data-id对应的文件,空的也行

    private List<NacosPropertySource> reqGlobalNacosConfig(ConfigurableEnvironment environment, Properties globalProperties,
            NacosConfigProperties nacosConfigProperties) {
        List<String> dataIds = new ArrayList<>();
        // Loads all data-id information into the list in the list
        if (!StringUtils.hasLength(nacosConfigProperties.getDataId())) {
            final String ids = environment
                    .resolvePlaceholders(nacosConfigProperties.getDataIds());
            if(StringUtils.hasText(ids)){
                dataIds.addAll(Arrays.stream(ids.split(","))
                        .filter(StringUtils::hasText)
                        .collect(Collectors.toList()));
            }
        }
        else {
            dataIds.add(nacosConfigProperties.getDataId());
        }
        final String groupName = environment
                .resolvePlaceholders(nacosConfigProperties.getGroup());
        final boolean isAutoRefresh = nacosConfigProperties.isAutoRefresh();
        return new ArrayList<>(Arrays.asList(reqNacosConfig(environment, globalProperties,
                dataIds.toArray(new String[0]), groupName, nacosConfigProperties.getType(), isAutoRefresh)));
    }