我明明配置了nacos的配置文件,并且在使用时也调用了bootstrap.yml,但是依然报错
发现问题:
我因为使用的时springboot 2.6.5 对应cloud版本时2021.x 对应的cloud-alibaba也就是2021.x
但是spring-cloud-alibaba在2020.x以后更新,就将这个bootstarp.yml文件给去除了,也就是
在SpringBoot2.4这个大版本中有一项非常重要的改动:出于对云原生多配置文件的支持,默认关闭了对bootstrap.yml的使用。在SpringCloud2020以后,配置bootstrap.yml都是无效的。
解决方法:
1、我们依然使用bootstrap.yml配置我们的配置中心:(不建议)毕竟人家都升级了
之后还是配置bootstrap.yml:
这里需要配置我们的服务名称,和nacos地址;
然后重启又报错。。。。
经过多方检查,发现没有引入bootstarp的依赖,引入依赖以后,项目成功启动
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
<version>4.0.0</version>
</dependency>
我们根据新特性,和官方文档的指导,我们可以直接在我们的application.yaml中配置
只需要 使用 spring.config.import关键字;
之后就不需要bootstrap.yaml和相关依赖了
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
config:
server-addr: 127.0.0.1:8848
因为我配置中心没写什么配置,只写了地址,做例子不全面,引用官网的例子做说明:
示例:
# bootstrap.yml
spring:
cloud:
nacos:
config:
name: test.yml
group: DEFAULT_GROUP
server-addr: 127.0.0.1:8848
extension-configs:
- dataId: test01.yml
group: group_01
- dataId: test02.yml
group: group_02
refresh: false
# application.yml
spring:
cloud:
nacos:
config:
group: DEFAULT_GROUP
server-addr: 127.0.0.1:8848
config:
import:
- optional:nacos:test.yml # 监听 DEFAULT_GROUP:test.yml
- optional:nacos:test01.yml?group=group_01 # 覆盖默认 group,监听 group_01:test01.yml
- optional:nacos:test02.yml?group=group_02&refreshEnabled=false # 不开启动态刷新
- nacos:test03.yml # 在拉取nacos配置异常时会快速失败,会导致 spring 容器启动失败
以上两个配置文件是等价的;