Spring Cloud Alibaba (2) - Nacos

282 阅读1分钟

代码地址:github.com/toyranger/l…

  • 分布式配置中心

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
  1. 在配置中心创建

service-provider-config.yml 和

service-provider-config-prod.yml,代表不同环境的配置

  1. 在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就可以读取对应的配置文件