背景

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

配置bootstrap配置文件报错

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

分析

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

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

解决

方法一

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

org.springframework.cloud

spring-cloud-starter-bootstrap

引入后,在配置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 # *****代表注册中心地址

相关阅读

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: