nacos-config 无法获取值

376 阅读1分钟

今天发现在引入

<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> 
</dependency

新增bootstrap.properties配置文件,内容如下

spring.application.name=nacos-config
server.port=4001
spring.cloud.nacos.config.server-addr=127.0.0.1:8848

在确认nacos上配置正确后,仍然无法访问到配置的值

image.png

在引入 discovery后

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

后直接提示

java.lang.IllegalArgumentException: Param 'serviceName' is illegal, serviceName is blank

怀疑bootstrap配置文件根本未加载,百度发现新版本的cloud默认不加载bootstrap配置文件

解决方法

A 增加启动参数 spring.cloud.bootstrap.enabled=true或者spring.config.use-legacy-processing=true

B 增加依赖spring-cloud-starter-bootstrap

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

该依赖下只有一个类Marker

image.png

image.png

也没有什么实际的内容

实现原理

在监听器BootstrapApplicationListener.class中我们可以找到答案

image.png

image.png

抽象类Marker为什么可以加载bootstrap出现了