• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

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

武飞扬头像
木棉软糖
帮助1

问题展示:

学新通

场景:

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

<dependencies>
		<!--这里是groupId = com.alibaba.cloud 的nacos依赖-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
        <!--这里是groupId = com.alibaba.boot 的nacos依赖-->
        <dependency>
            <groupId>com.alibaba.boot</groupId>
            <artifactId>nacos-config-spring-boot-starter</artifactId>
            <version>0.2.1</version>
        </dependency>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
        </dependency>
    </dependencies>
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>2.2.7.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
学新通

首先,先不管为什么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

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhgbchaj
系列文章
更多 icon
同类精品
更多 icon
继续加载