栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Nacos搭建配置中心出现client error: invalid param. endpoint is blank

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Nacos搭建配置中心出现client error: invalid param. endpoint is blank

问题展示:

场景:

在当前项目中,想通过nacos作为配置中心,获取到nacos中存放的配置,因此我加入了以下依赖


		<!--这里是groupId = com.alibaba.cloud 的nacos依赖-->
        
            com.alibaba.cloud
            spring-cloud-starter-alibaba-nacos-config
        
        
            com.alibaba.cloud
            spring-cloud-starter-alibaba-nacos-discovery
        
        <!--这里是groupId = com.alibaba.boot 的nacos依赖-->
        
            com.alibaba.boot
            nacos-config-spring-boot-starter
            0.2.1
        
        
            org.apache.commons
            commons-lang3
        
    
    
        
            
                com.alibaba.cloud
                spring-cloud-alibaba-dependencies
                2.2.7.RELEASE
                pom
                import
            
        
    

首先,先不管为什么alibaba开发者需要把nacos分成groupId = com.alibaba.cloud 和groupId = com.alibaba.boot两种依赖。
我虽然先使用了groupId = com.alibaba.cloud的依赖,而且已经在application.yml中配置了nacos的服务地址。

server:
  servlet:
    context-path: /mdc-mvc-demo
  port: 8081
spring:
  application:
    name: mdc-mvc-demo
  cloud:
    nacos:
      config:
        enable: true # 使用是否配置自动更新
        server-addr: 127.0.0.1:8848
        group: DEFAULT_GROUP # 组,默认为 DEFAULT_GROUP
        file-extension: yaml # 配置内容的数据格式,默认为 properties

但是我参照网络教程的例子,使用的@NacosPropertySource注解是需要使用到groupId = com.alibaba.boot的依赖。
改好了pom.xml之后,我就兴高采烈的启动了,结果启动失败,抛出了上面展示的那个错误。

分析原因:

首先,能够确定的是,是由于@NacosPropertySource引起的问题。
刚开始确实没有什么头绪,于是我从上面打印的日志开始找原因,我注意到某个日志:

22:12:29.077 [main] WARN NacosPropertySourceBuilder -Ignore the empty nacos configuration and get it based on dataId[mdc-mvc-demo] & group[DEFAULT_GROUP]

为什么会提示我nacos的配置为空呢?而且我的dataId是设置为mdc-mvc-demo.yaml,它锁打印的dataId[mdc-mvc-demo] 只是基于spring.application.name设置的默认值。

@Data
@Component
@NacosPropertySource(dataId = "mdc-mvc-demo.yaml", autoRefreshed = true)
public class NacosAnotherProperties {
    @NacosValue(value = "${project.name}", autoRefreshed = true)
    private String name;
    @NacosValue(value = "${project.org}", autoRefreshed = true)
    private String org;
}

因此,我推测,是由于groupId = com.alibaba.cloud 和groupId = com.alibaba.boot两种依赖并不是使用同一套配置,groupId = com.alibaba.boot这一套依赖使用的配置是com.alibaba.boot.nacos.config.properties.NacosConfigProperties

于是,我尝试添加了配置:

server:
  servlet:
    context-path: /mdc-mvc-demo
  port: 8081
spring:
  application:
    name: mdc-mvc-demo
      #  cloud:
      #    nacos:
      #      config:
      #        enable: true # 使用是否配置自动更新
      #        server-addr: 127.0.0.1:8848
      #        group: DEFAULT_GROUP # 组,默认为 DEFAULT_GROUP
      #        file-extension: yaml # 配置内容的数据格式,默认为 properties
    # prefix: 不配置默认是spring.application.name
nacos:
  config:
    server-addr: 127.0.0.1:8848

后来尝试,@NacosPropertySource不能解析yaml类型的配置,这里改成properties

@Data
@Component
@NacosPropertySource(dataId = "mdc-mvc-demo", autoRefreshed = true)
public class NacosAnotherProperties {
    @NacosValue(value = "${project.name}", autoRefreshed = true)
    private String name;
    @NacosValue(value = "${project.org}", autoRefreshed = true)
    private String org;
}

再次启动后,就没有再提示endpoint is blank的报错了,而且也能读取到nacos的配置

解决问题

因此,解决问题的方法是:
如果使用groupId = com.alibaba.boot这种依赖的功能的话,应该使用nacos.config进行配置nacos

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/756724.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号