天天看點

Spring Cloud Nacos實戰(四)- 服務配置中心Nacos之服務配置中心

Nacos之服務配置中心

基礎配置

Nacos不僅僅可以作為注冊中心來使用,同時它支援作為配置中心

Spring Cloud Nacos實戰(四)- 服務配置中心Nacos之服務配置中心

首先我們還是建立Model:cloudalibaba-config-3377

pom檔案

​ 這裡我們主要要引入的是此依賴,這個依賴依據在官網上可以找到:https://spring-cloud-alibaba-group.github.io/github-pages/greenwich/spring-cloud-alibaba.html#_an_example_of_using_nacos_discovery_for_service_registrationdiscovery_and_call

<dependency> 
    <groupId> com.alibaba.cloud </groupId> 
    <artifactId> spring-cloud-starter-alibaba-nacos-config </artifactId> 
</dependency>
           

YML配置

​ 要注意的是這裡我們要配置兩個,因為Nacos同SpringCloud-config一樣,在項目初始化時,要保證先從配置中心進行配置拉取,拉取配置之後,才能保證項目的正常啟動。

​ springboot中配置檔案的加載是存在優先級順序的,bootstrap優先級高于application

​ 分别要配置的是,這裡bootstrap.yml配置好了以後,作用是兩個,第一個讓3377這個服務注冊到Nacos中,第二個作用就是去Nacos中去讀取指定字尾為yaml的配置檔案:

bootstrap.yml

# nacos配置
server:
  port: 3377

spring:
  application:
    name: nacos-config-client
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848 #Nacos服務注冊中心位址
      config:
        server-addr: localhost:8848 #Nacos作為配置中心位址
        file-extension: yaml #指定yaml格式的配置
           

application.yml

spring:
  profiles:
    active: dev # 表示開發環境
           

主啟動

package com.mashibing.cloudalibabaconfig3377;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

@SpringBootApplication
@EnableDiscoveryClient
public class CloudalibabaConfig3377Application {

    public static void main(String[] args) {
        SpringApplication.run(CloudalibabaConfig3377Application.class, args);
    }

}
           

業務類

​ 這裡的@RefreshScope實作配置自動更新,意思為如果想要使配置檔案中的配置修改後不用重新開機項目即生效,可以使用@RefreshScope配置來實作

package com.mashibing.cloudalibabaconfig3377.controller;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RefreshScope //支援Nacos的動态重新整理功能
public class ConfigClientController {

    @Value("${config.info}")
    private String configInfo;

    @GetMapping("/config/info")
    public String getConfigInfo(){
        return configInfo;
    }

}
           

Nacos配置規則

​ 在 Nacos Spring Cloud 中,

dataId

的完整格式如下(詳情可以參考官網 https://nacos.io/zh-cn/docs/quick-start-spring-cloud.html):

1. `prefix` 預設為 `spring.application.name` 的值,也可以通過配置項 `spring.cloud.nacos.config.prefix`來配置。
2. `spring.profiles.active` 即為目前環境對應的 profile,注意:**當 `spring.profiles.active` 為空時,對應的連接配接符 `-` 也将不存在,dataId 的拼接格式變成 `${prefix}.${file-extension}`**(不能删除)
3. `file-exetension` 為配置内容的資料格式,可以通過配置項 `spring.cloud.nacos.config.file-extension` 來配置。目前隻支援 `properties` 和 `yaml` 類型。
4. 通過 Spring Cloud 原生注解 `@RefreshScope` 實作配置自動更新:
5. 是以根據官方給出的規則我們最終需要在Nacos配置中心添加的配置檔案的名字規則和名字為:
           
# ${spring.application.name}-${spring.profiles.active}.${file-extension}
# nacos-config-client-dev.yaml
# 微服務名稱-目前環境-檔案格式
           
Spring Cloud Nacos實戰(四)- 服務配置中心Nacos之服務配置中心

Nacos平台建立配置操作

增加配置

Spring Cloud Nacos實戰(四)- 服務配置中心Nacos之服務配置中心
Spring Cloud Nacos實戰(四)- 服務配置中心Nacos之服務配置中心
config: 
    info: nacos config center,version = 1
           

然後在配置中心就會看到剛剛釋出的配置

Spring Cloud Nacos實戰(四)- 服務配置中心Nacos之服務配置中心

自動配置更新

修改Nacos配置,不需要重新開機項目即可自動重新整理

Spring Cloud Nacos實戰(四)- 服務配置中心Nacos之服務配置中心

修改版本号為2,點選釋出

Spring Cloud Nacos實戰(四)- 服務配置中心Nacos之服務配置中心

測試

啟動服務通路服務來測試(沒有修改之前是1,修改之後不需要重新開機項目既可以直接擷取最新配置):http://localhost:3377/config/info

Spring Cloud Nacos實戰(四)- 服務配置中心Nacos之服務配置中心

繼續閱讀