Spring Cloud-Nacos配置管理

前置文章:
一、Spring Cloud-Erueka服务注册&发现
二、Spring Cloud-Nacos服务注册&发现

零、本文纲要

  • 一、Nacos配置中心快速入门
  • 二、Nacos配置自动刷新
  • 三、Nacos配置共享
    配置优先级

tips:Ctrl + F定位到所需内容快速阅读吧。

一、Nacos配置中心快速入门

Nacos配置中心项目.png

①常规项目:项目启动→读取application.yml配置文件→创建Spring IOC容器→加载Bean;
②Nacos配置中心项目:项目启动→读取Nacos配置中心文件→读取application.yml配置文件→创建Spring IOC容器→加载Bean;
注意:此处的问题是Nacos server-addr相关配置在application.yml中,所以引入bootstrap.yml配置,来提前加载Nacos配置中心所需配置。
③Nacos配置中心项目:项目启动→读取bootstrap.yml配置文件→读取Nacos配置中心文件→读取application.yml配置文件→创建Spring IOC容器→加载Bean;

  • 1、基础依赖

注意:SpringCloud2020及以后的版本默认不启用 bootstrap 配置,我们需要在pom里面显式地引入,以开启bootstrap.yml配置文件读取的支持。

        
        
            com.alibaba.cloud
            spring-cloud-starter-alibaba-nacos-config
        
        
        
            org.springframework.cloud
            spring-cloud-starter-bootstrap
        
  • 2、编写bootstrap.yml配置文

user服务读取配置中心配置三要素:
①spring-application-name:应用名称-userservice;
②spring-profiles-active:配置文件环境-dev(代表开发环境develop);
③file-extension:文件扩展名-yaml;
配置中心处,配置文件完整名称:userservice-dev.yaml

# use bootstrap.yml to load settings from nacos before application.yml is loaded
# [spring-application-name][spring-profiles-active][file-extension]
spring:
  application:
    name: userservice
  profiles:
    active: dev # environment
  cloud:
    nacos:
      server-addr: 127.0.0.1:8848 # server address
      config:
        file-extension: yaml # file extension
  • 3、编写userservice-dev.yaml配置文件

①配置管理→配置列表→➕

配置管理配置列表.png

②编写userservice-dev.yaml配置文件

编写配置文件.png
  • 4、编写代码读取配置

①@Value注解注入配置属性

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

②方法内读取配置

    LocalDateTime.now().format(DateTimeFormatter.ofPattern(dateformat));

二、Nacos配置自动刷新

  • 1、@RefreshScope注解 + @Value注解

在对应的@Value注解使用的类上使用@RefreshScope注解

@RefreshScope
public class UserController{
    ...
    @Value("${pattern.dateformat}")
    private String dateformat;
    ...
}
  • 2、@ConfigurationProperties注解 + @Autowired注解

编写Config类:prefix = "pattern" + [field] dateformat,与配置文件pattern.dateformat 对应即可。

@Component
@Data
@ConfigurationProperties(prefix = "pattern")
public class PatternProperties {
    private String dateformat;
}
  • 3、获取Config类的bean,获取属性
    @Autowired
    private PatternProperties patternProperties;

    patternProperties.getDateformat();

三、Nacos配置共享

  • 1、[spring-application-name][spring-profiles-active][file-extension]
    开发环境:userservice-dev.yaml
    测试环境:userservice-test.yaml
    生产环境:userservice-pro.yaml
  • 2、[spring-application-name][file-extension]
    共享配置:userservice.yaml
  • 3、application.yml本地配置

配置优先级:[spring-application-name][spring-profiles-active][file-extension]>[spring-application-name][file-extension]>本地配置;
即:服务名-环境类型.yaml>服务名.yaml>本地配置。
如果配置不同,则合并,相同则优先级高的覆盖优先级低的。

  • 4、shared-configs 和 extension-configs
    优先级:extension-configs > shared-configs ,此处不做展开,配置如下:
# use bootstrap.yml to load settings from nacos before application.yml is loaded
# [application-name][profile][file-extension]
spring:
  application:
    name: userservice
  profiles:
    active: dev # environment
  cloud:
    nacos:
      server-addr: 127.0.0.1:8848 # server address
      config:
        file-extension: yaml # file extension
        shared-configs:
          - dataId: common-one.yaml
            group: SHARE_GROUP_ONE          
          - dataId: common-two.yaml
            group: SHARE_GROUP_TWO
        extension-configs:
          - dataId: extend.yaml
            group: EXTEND_GROUP_ONE

另外:extension-configs的加载后于shared-configs。

四、结尾

以上即为Nacos配置管理的基础内容,感谢阅读。

你可能感兴趣的:(Spring Cloud-Nacos配置管理)