背景
最近我们新开发的产品要接入公司统一的注册中心以及配置中心。 注册中心使用的是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文件中添加依赖
引入后,在配置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 # *****代表注册中心地址
相关阅读
发表评论