SpringCloud

# SpringCloud

# Nacos

在bin目录下打开命令提示符 startup.cmd -m standalone

# Nacos配置管理

配置管理-配置列表

# 新建配置

DataID :服务名称-开发环境.yaml 例如:userservice-dev.yaml

# 配置内容

有变化的配置

pattern:
	dateformat:yyyy-MM-dd HH:mm:ss
1
2

点击发布-发布成功

# 获取配置

# 将配置交给Nacos管理的步骤

在Nacos中添加配置文件 在微服务中引入nacos的config依赖 在微服务中添加bootstrap.yml,配置nacos地址、 当前环境、服务名称、文件后缀名。这些决定了程序 启动时去nacos读取哪个文件

项目启动-读取本地配置文件application.yml-创建spring容器-加载bean

Nacos会先bootstrap.yml文件拿到nacos地址后读取nacos中配置文件再去读取本地配置文件

bootstrap.yml:与nocos地址和配置文件有关的所有信息

引入Nacos的配置管理客户端依赖

<!--nacos配置管理依赖-->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
1
2
3
4
5

新建bootstrap.yml文件

spring:
  application:
    name: userservice
  profiles:
    active: dev #环境
  cloud:
    nacos:
      server-addr: localhost:8848 # nacos地址
      config:
        file-extension: yaml #文件后缀名
1
2
3
4
5
6
7
8
9
10

usercontroller

	@Value("${pattern.dateformat}")
    private String dateformat;

    @GetMapping("now")
    public String now(){
        return LocalDateTime.now().format(DateTimeFormatter.ofPattern(dateformat));
    }
1
2
3
4
5
6
7

测试 localhost:8086/user/now

# 配置自动刷新

Nacos中的配置文件变更后,微服务无需重启就可以感知。不过需要通过下面两种配置实现

方式一:在@Value注入的变量所在类上添加注解@RefreshScope

方式二:使用 @ConfigurationProperties 注解

# 多环境配置共享

微服务会从nacos读取的配置文件: [服务名]-[spring.profile.active].yaml,环境配置 [服务名].yaml,默认配置,多环境共享 优先级: [服务名]-[环境].yaml >[服务名].yaml >本地配置

微服务启动时会从nacos读取多个配置文件

  • 服务名称-开发环境.yaml userservice-dev.yaml
  • 服务名称.yaml userservice.yaml

无论profile如何变化userservice.yaml这个文件一定会加载,因此多环境共享配置可以写入这个文件

# Nocos集群搭建