- 分布式配置中心
Nacos提供用于存储配置和其他元数据的key/value存储,为分布式系统中的外部化配置提供服务端和客户端支持。 Spring Cloud Alibaba Nacos Config是Spring Cloud Config Server和Client的替代方案。
1. pom.xml
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
2. 在Nacos看板上新建配置,代码里的resources的application.yml就不需要了
3. resources下面创建bootstrap.properties
springboot配置文件加载顺序:
## bootstrap.properties是一定会加载的
bootstrap.properties -> bootstrap.yml -> application.properties -> application.yml
## bootstrap.properties
# name就是Nacos看板的配置的Data ID
spring.application.name=service-consumer-config
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
spring.cloud.nacos.config.file-extension=yml
4. 测试动态刷新配置
## 在service-consumer-config.yml中加一个配置
user:
name: hahaha
## 在controller中引入这个配置,并加上刷新注解@RefreshScope
@RefreshScope
@RestController
public class HelloController {
@Value("${user.name}")
private String username;
@GetMapping("/feign/echo")
public String echo() {
return username;
}
}
此时如果直接在Nacos看板上修改配置,请求这个接口会实时获取最新的值,即动态刷新。
5. 多环境配置
## 原理就是使用springboot提供的profiles参数:
java -jar app.jar --spring.profiles.active=prod
- 在配置中心创建
service-provider-config.yml 和
service-provider-config-prod.yml,代表不同环境的配置
- 在resources下创建
bootstrap.properties
spring.application.name=service-provider-config
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
spring.cloud.nacos.config.file-extension=yml
bootstrap-prod.properties
spring.profiles.active=prod
spring.application.name=service-provider-config
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
spring.cloud.nacos.config.file-extension=yml
启动命令加上参数spring.profiles.active=prod就可以读取对应的配置文件