springboot2.5.x版本 bootstrap配置文件不生效

背景

最近我们新开发的产品要接入公司统一的注册中心以及配置中心。
注册中心使用的是eureka
配置中心使用的是springcloud config

配置bootstrap配置文件报错

当我们配置了配置中心之后,springcloud项目在启动的过程中会创建一个bootstrap上下文环境,加载远程的配置文件,也就是配置中心的配置文件。
所以在项目中配置了bootstrap.yml用来配置配置中心以及注册中心的地址,进而来取配置文件。
但是配置好bootstrap.yml文件启动之后报错如下:
在这里插入图片描述

分析

我们知道bootstrap.propertiesapplication.properties的优先级要高

bootstrap.properties是系统级的资源配置文件,是用在程序引导执行时更加早期配置信息读取;
application.properties是用户级的资源配置文件,是用来后续的一些配置所需要的公共参数。
如果你使用的是springboot 2.5.x以下版本,或者SpringCloud 2020.*以下版本,就不会出现此问题,因为 springboot 2.5.x 以上,SpringCloud 2020.*以上版本中禁用了bootstrap模块

解决

方法一

重新引入bootstrap模块,需要在pom文件中添加依赖

 <dependency>
     <groupId>org.springframework.cloud</groupId>
     <artifactId>spring-cloud-starter-bootstrap</artifactId>
 </dependency>

引入后,在配置bootstrap配置文件
注意版本,我这边使用了统一的版本管理,如果你没有进行springcloud 版本管理配置,需要引入对应的版本。

方法二

使用springcloud最新的配置中心文件的引入方式
无需创建bootstrap配置文件,在application.yml配置文件中添加以下配置

spring:
  config:
    import: "optional:configserver:" #拉取配置中心的配置文件,可以指定配置中心server的地址
  cloud:
    config:
      discovery:
        enabled: true
        service-id: config-server #配置中心的id名称。不要修改,否则无法找到配置中心的服务
      profile:  dev    #启用dev环境的配置文件
      username: ***
      password: ****
      label: master #远程用来存放配置文件的 git的分支
      name: demo #要拉取的分支名称
  application:
    name: demo
eureka:
  instance:
    prefer-ip-address: true
    instance-id: ${spring.cloud.client.ip-address}:${server.port}
  client:
    service-url:
      defaultZone: http://*****/eureka # *****代表注册中心地址
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LLLDa_&

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值