Spring Cloud實戰 | 第三篇:Spring Cloud整合Nacos實現配置中心

前言

隨着eureka的中止更新,若是同時實現註冊中心和配置中心須要SpringCloud Eureka和SpringCloud Config兩個組件;配置修改刷新時須要SpringCloud Bus消息總線發出消息通知(Kafka、RabbitMQ等)到各個服務完成配置動態更新,否者只有重啓各個微服務實例,可是nacos能夠同時實現註冊和配置中心,以及配置的動態更新。git

版本聲明

Nacos Server: 1.3.2github

SpringBoot: 2.3.0.RELEASEspring

SpringCloud: Hoxton.SR5bootstrap

SpringCloud Alibaba: 2.2.1.RELEASEapp

項目實戰

1.youlai-auth添加nacos-config依賴微服務

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

2.項目配置文件bootstrap.yml指定nacos配置文件名ui

spring:
  application:
    name: youlai-auth
  cloud:
    nacos:
      discovery:
        server-addr: http://localhost:8848
      config:
        file-extension: yaml  # 必須修改爲yaml
        group: DEFAULT_GROUP  # 缺省便可
        prefix: ${spring.application.name} # 缺省便可
rsa:
  publicKey: 123456

注意這裏使用bootstrap.yml而非application.yml,避免applicaton.yml後加載於nacos配置並覆蓋this

SpringBoot讀取配置文件順序:bootstrap.yml>bootstrap.yaml>bootstrap.properties>nacos的配置>application.yml>application.yaml>application.propertiescode

3.添加接口讀取配置信息並添加動態刷新配置的註解@RefreshScopeserver

@RefreshScope
@RestController
@RequestMapping("/oauth")
public class AuthController {

    @Value("${rsa.publicKey}")
    public String publicKey;

    @GetMapping("/publicKey")
    public Result getPublicKey(){
        return Result.success(this.publicKey);
    }
}

4.打開nacos管理控制檯添加配置

DATA-ID :  ${prefix}-${spring.profiles.active}.${file-extension}

a). prefix 默認spring.application.name 的值,也能夠經過配置項 spring.cloud.nacos.config.prefix來配置

b). file-extension默認properties,好比我這裏使用的是yaml,那麼更改spring.cloud.nacos.config.file-extension= yaml

c). Group默認DEFAULT_GROUP,也能夠經過配置項 spring.cloud.nacos.config.group來配置

5.啓動服務後第一次讀取配置信息

6.再次請求接口獲取配置信息

能夠看到經過接口第二次獲取配置信息已變動,完成配置信息的動態刷新

結語

至此youlai-auth模塊整合nacos配置中心完成了,是否是相較於eureka整合SpringCloud Config方便了不少,完整代碼地址在https://github.com/hxrui/youlai/tree/nacos。未完待續...

相關文章
相關標籤/搜索