Could not resolve placeholder “xxx.xxx” in value “${xxx.xxx}”.....踩坑记录

目录

环境

父工程依赖

子工程依赖

配置文件

yaml方式

1. bootstrap.yml

2. nacos中心DataID

3. 配置参数

properties方式

1. bootstrap.properties

2. nacos中心DataID

3. 配置参数

使用


最近在学习nacos相关时碰到一个问题,在nacos中配置了yaml文件后,无论如何都无法在项目中读取,项目加载便会报异常无法启动, 在经历了修改yaml后缀、添加依赖、删除依赖、重启大法、修改spring-application-name等诸多操作耗时一天未果之后,终于将其解决。

环境

一定要注意版本匹配问题

  • Springboot 2.5.4

  • SpringCloud 2020.0.4

  • SpringCloud Alibaba 2.2.6.RELEASE

  • Nacos 2.0.2

父工程依赖

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.5.4</version>
    <relativePath />
</parent>

<dependencyManagement>
    <dependencies>

      <!-- SpringCloud 依赖 -->
      <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-dependencies</artifactId>
        <version>2020.0.4</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>

      <!-- SpringCloud Alibaba 依赖 -->
      <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-alibaba-dependencies</artifactId>
        <version>2.2.6.RELEASE</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
    <dependencies>
</dependencyManagement>

子工程依赖

<dependencies>

        <!-- 服务注册与发现 -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>

        <!-- 分布式(微服务)配置中心 -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>


        <!-- 微服务的bootstrap -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-bootstrap</artifactId>
        </dependency>
</dependencies>

配置文件

yaml方式

如果你采用了yaml配置方式,但出现了标题中的错误,请仔细看如下的内容。

1. bootstrap.yml

此处一定需要确保server-addr配置正确,以及file-extensionyaml在项目中bootstrap及其它文件可使用后缀为yml或yaml,但nacos中配置文件后缀必须使用yaml

spring:
  application:
    name: video
  cloud:
    nacos:
      config:
        server-addr: ip:8848   # nacos 所在的地址
            file-extension: yaml

2. nacos中心DataID

项目名称-环境.yaml此处的项目名称要使用上一步bootstrap.yml文件中application下的name属性我的配置为video,则DataId

开发环境        video-dev.yaml

生产环境        video-prod.yaml

这里的yaml不可以写成yml,务必注意!

3. 配置参数

yaml 文件的格式务必注意        (我就是被这个坑了很久)

例如此处我需要获取nacos中一个counts属性的值,则配置如下,一定注意counts和后边数值之间的空格, 如果没有加空格的话会导致标题所示的错误。

nacos:
    counts: 111

properties方式

1. bootstrap.properties

默认为properties,此处不需要指定file-extension

spring.application.name=video
spring.cloud.nacos.config.server-addr=ip:8848

2. nacos中心DataID

项目名称-环境.properties此处的项目名称要使用上一步bootstrap.properties文件中spring.application.name属性,我这里配置为video,则DataId

开发环境        video-dev.properties

生产环境        video-prod.properties

注意properties的拼写,不要少多写或少写字母。

3. 配置参数

例如此处我需要获取nacos中一个counts属性的值,则配置如下。

nacos.counts=555

使用

配置完成后,通过如下方式获取配置的属性值

@Value("${nacos.counts}")
private Integer counts;

更多信息请参考官方文档

Nacos Spring Cloud 快速开始

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值