问题描述
将nacos作为项目配置中心时,bootstrap.yml按照官方文档:nacos-spring-cloud出现配置读取不到和用户鉴权问题
spring-cloud、spring-cloud-alibaba版本如下
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>2023.0.1</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2023.0.1.0</version>
<type>pom</type>
<scope>import</scope>
</dependency>
问题分析
配置读取问题
根据报错信息可以知道是spring-cloud对bootstrap.yml没有支持,通过查找资料知道spring-cloud 2020.0.2版本中把bootstrap的相关依赖从spring-cloud-starter-config中移除了。
用户鉴权问题
见官方文档nacos github地址
我们可以看到nacos2.3.2版本必须开启鉴权
问题解决
配置读取问题
在子工程中引入bootstrap相关依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>
用户鉴权问题
在bootstrap.yml中添加username、password
spring:
application:
name: yolo-order-service
cloud:
nacos:
username: 'nacos'
password: 'nacos'
discovery:
server-addr: 127.0.0.1:8848
config:
server-addr: 127.0.0.1:8848
file-extension: yaml
profiles:
active: dev
测试
@RestController
@RequestMapping("/nacos")
@RefreshScope
public class TestController {
@Value("${yolo}")
private String yolo;
@GetMapping("/config")
public String getYolo(){
return yolo;
}
}