天天看點

Nacos配置管理-統一配置管理、配置自動重新整理、多環境多服務共享配置

目錄

​​一、Nacos統一配置管理​​

​​二、配置自動重新整理​​

​​方式一:在@Value注入的變量所在類上添加注解@RefreshScope​​

​​方式二:使用@ConfigurationProperties注解​​

​​三、多環境配置共享​​

​​三、多服務共享配置​​

一、Nacos統一配置管理

1、在Nacos同添加配置檔案

Nacos配置管理-統一配置管理、配置自動重新整理、多環境多服務共享配置

 2、在微服務中引入Nacos的配置管理用戶端依賴:

<!--nacos的配置管理依賴-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>      

3、在userservice中的resource目錄添加一個bootstrap.yml檔案,這個檔案是引導檔案,優先級高于application.yml:

spring:
  application:
    name: userservice
  profiles:
    active: dev #環境
  cloud:
    nacos:
      server-addr: localhost:80 # nacos位址
      config:
        file-extension: yaml  # 檔案字尾名      

4、在user-service中将pattern.dateformat這個屬性注入到UserController中做測試:

@RestController
@RequestMapping("/user")
public class UserController {

    //注入nacos中的配置屬性
    @Value("${pattern.dateformat}")
    private String dateformat;

    //編寫controller,通過日期格式化器來格式化現在的時間并傳回
    @GetMapping("now")
    public String now(){
        return LocalDateTime.now().format(DateTimeFormatter.ofPattern(properties.getDateformat()));
    }

    //...略
}      

二、配置自動重新整理

Nacos中的配置檔案變更後,微服務無需重新開機就可以感覺,不過需要通過下面兩種配置實作:

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

@Slf4j
@RestController
@RequestMapping("/user")
@RefreshScope
public class UserController {

    //注入nacos中的配置屬性
    @Value("${pattern.dateformat}")
    private String dateformat;      

方式二:使用@ConfigurationProperties注解

@Data
@Component
@ConfigurationProperties(prefix = "pattern")
public class PatternProperties {
    private String dateformat;
}      

注意事項:

不是多有的配置都适合放到配置中心,維護起來比較麻煩

建議将一些關鍵參數,需要運作時調整的參數放在nacos

三、多環境配置共享

微服務啟動時會從nacos讀取多個配置檔案:

[spring.application.name]-[spring.profiles.active].yaml,例如:userservice-dev.yaml

[spring.appliction.name].yaml,例如:userservice.yaml

無論profile如何,[spring.appliction.name].yaml這個檔案一定會加載,是以多環境共享配置可以寫入這個檔案

Nacos配置管理-統一配置管理、配置自動重新整理、多環境多服務共享配置

多種配置的優先級:

Nacos配置管理-統一配置管理、配置自動重新整理、多環境多服務共享配置

三、多服務共享配置

不同微服務之間可以共享配置檔案,通過下面的兩種方式來指定

方式一:

spring:
  application:
    name: userservice
  profiles:
    active: dev #環境
  cloud:
    nacos:
      server-addr: localhost:80 # nacos位址
      config:
        file-extension: yaml  # 檔案字尾名
        shared-configs: # 多服務間共享的配置清單
         -datald: common.yaml # 要共享的配置檔案id      
spring:
  application:
    name: userservice
  profiles:
    active: dev #環境
  cloud:
    nacos:
      server-addr: localhost:80 # nacos位址
      config:
        file-extension: yaml  # 檔案字尾名
        extends-configs: # 多服務間共享的配置清單
         -datald: extend.yaml # 要共享的配置檔案id      

繼續閱讀