Spring Cloud-Nacos配置管理

前置文章:
一、Spring Cloud-Erueka服務(wù)注冊(cè)&發(fā)現(xiàn)
二、Spring Cloud-Nacos服務(wù)注冊(cè)&發(fā)現(xiàn)

零、本文綱要

  • 一、Nacos配置中心快速入門(mén)
  • 二、Nacos配置自動(dòng)刷新
  • 三、Nacos配置共享
    配置優(yōu)先級(jí)

tips:Ctrl + F定位到所需內(nèi)容快速閱讀吧。

一、Nacos配置中心快速入門(mén)

Nacos配置中心項(xiàng)目.png

①常規(guī)項(xiàng)目:項(xiàng)目啟動(dòng)→讀取application.yml配置文件→創(chuàng)建Spring IOC容器→加載Bean;
②Nacos配置中心項(xiàng)目:項(xiàng)目啟動(dòng)→讀取Nacos配置中心文件→讀取application.yml配置文件→創(chuàng)建Spring IOC容器→加載Bean;
注意:此處的問(wèn)題是Nacos server-addr相關(guān)配置在application.yml中,所以引入bootstrap.yml配置,來(lái)提前加載Nacos配置中心所需配置。
③Nacos配置中心項(xiàng)目:項(xiàng)目啟動(dòng)→讀取bootstrap.yml配置文件→讀取Nacos配置中心文件→讀取application.yml配置文件→創(chuàng)建Spring IOC容器→加載Bean;

  • 1、基礎(chǔ)依賴(lài)

注意:SpringCloud2020及以后的版本默認(rèn)不啟用 bootstrap 配置,我們需要在pom里面顯式地引入,以開(kāi)啟bootstrap.yml配置文件讀取的支持。

        <!--nacos配置管理依賴(lài)-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>
        <!--加載bootstrap.yml文件-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-bootstrap</artifactId>
        </dependency>
  • 2、編寫(xiě)bootstrap.yml配置文

user服務(wù)讀取配置中心配置三要素:
①spring-application-name:應(yīng)用名稱(chēng)-userservice;
②spring-profiles-active:配置文件環(huán)境-dev(代表開(kāi)發(fā)環(huán)境develop);
③file-extension:文件擴(kuò)展名-yaml;
配置中心處,配置文件完整名稱(chēng):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、編寫(xiě)userservice-dev.yaml配置文件

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

配置管理配置列表.png

②編寫(xiě)userservice-dev.yaml配置文件

編寫(xiě)配置文件.png
  • 4、編寫(xiě)代碼讀取配置

①@Value注解注入配置屬性

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

②方法內(nèi)讀取配置

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

二、Nacos配置自動(dòng)刷新

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

在對(duì)應(yīng)的@Value注解使用的類(lèi)上使用@RefreshScope注解

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

編寫(xiě)Config類(lèi):prefix = "pattern" + [field] dateformat,與配置文件pattern.dateformat 對(duì)應(yīng)即可。

@Component
@Data
@ConfigurationProperties(prefix = "pattern")
public class PatternProperties {
    private String dateformat;
}
  • 3、獲取Config類(lèi)的bean,獲取屬性
    @Autowired
    private PatternProperties patternProperties;

    patternProperties.getDateformat();

三、Nacos配置共享

  • 1、[spring-application-name][spring-profiles-active][file-extension]
    開(kāi)發(fā)環(huán)境:userservice-dev.yaml
    測(cè)試環(huán)境:userservice-test.yaml
    生產(chǎn)環(huán)境:userservice-pro.yaml
  • 2、[spring-application-name][file-extension]
    共享配置:userservice.yaml
  • 3、application.yml本地配置

配置優(yōu)先級(jí):[spring-application-name][spring-profiles-active][file-extension]>[spring-application-name][file-extension]>本地配置;
即:服務(wù)名-環(huán)境類(lèi)型.yaml>服務(wù)名.yaml>本地配置。
如果配置不同,則合并,相同則優(yōu)先級(jí)高的覆蓋優(yōu)先級(jí)低的。

  • 4、shared-configs 和 extension-configs
    優(yōu)先級(jí):extension-configs > shared-configs ,此處不做展開(kāi),配置如下:
# 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。

四、結(jié)尾

以上即為Nacos配置管理的基礎(chǔ)內(nèi)容,感謝閱讀。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容