SpringCloudAlibaba快速入門(2)基於Nacos構建分佈式配置中心

寫在前面的文章

快速入門

接下來通過一個簡單的例子實現在 Nacos 中創建配置,在 SpringBoot 應用中加載 Nacos 配置並響應 Nacos 中的配置變化

創建配置

第一步:進入 Nacos 管理界面,選擇 配置管理 \> 配置列表,點擊右側 + 號創建新配置
新建配置界面

重要的配置項說明:

  • DataId:使用 {項目名}.{配置格式} 的格式,本次填入 nacos-config-client.properties
  • Group:分組名,默認爲 DEFAULT_GROUP,本次操作使用默認值
  • 配置格式:默認爲 properties,本次操作使用默認值,如果要使用其它格式則需要在應用中進行相應地配置
  • 配置內容:填入 couse.title=nacos

創建應用

第一步:創建一個 SpringBoot 應用,命名爲 nacos-config-client,保持跟上面的 DataId 一致
第二步:添加依賴

添加父依賴

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.0.5.RELEASE</version>
    <relativePath/>
</parent>

添加依賴管理器

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>Finchley.SR1</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-alibaba-dependencies</artifactId>
            <version>0.2.2.RELEASE</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

添加依賴

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <!-- Nacos配置模塊 -->
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
    </dependency>
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <optional>true</optional>
    </dependency>
</dependencies>

本例並沒有添加對 Nacos 服務註冊發現模塊的依賴,配置功能跟服務註冊發現功能是完全分立的,可以獨立使用。

第三步:配置

配置服務名稱及 Nacos 地址

server.port=8083
spring.application.name=nacos-config-client
spring.cloud.nacos.config.server-addr=127.0.0.1:8848

spring.application.name 配置成與 Nacos 中創建的 DataId 一致

第四步:創建啓動類,並提供一個對外接口

@SpringBootApplication
public class Application {

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

    @Slf4j
    @RestController
    @RefreshScope
    static class TestController {

        @Value("${couse.title}")
        private String title;

        @GetMapping("/test")
        public String hello() {
            return title;
        }
    }
}

接口實現很簡單,就是輸出配置文件中的 couse.title 的內容

  • @Value註解用於讀取配置文件中的配置
  • @RefreshScope註解用於支持動態刷新配置內容,有了這個註解,在 Nacos 修改配置內容,@Value就會及時讀取到最新的內容

第五步:啓動應用
在啓動日誌最開始可以看到兩行日誌,說明已經成功從 Nacos 中加載配置,而且是在應用啓動之前進行加載

Loading nacos data, dataId: 'nacos-config-client.properties', group: 'DEFAULT_GROUP'
Located property source: CompositePropertySource {name='NACOS', propertySources=[NacosPropertySource {name='nacos-config-client.properties'}]}

驗證配置獲取

訪問接口 http://localhost:8083/test,如果一切正常,則會輸出 Nacos 中配置的 nacos

驗證配置動態更新

在 Nacos 管理後臺修改配置內容爲 couse.title=nacos changed,再次訪問接口,可以看到輸出的結果也會相應改變。

查看日誌,可以看到配置被重新加載

Loading nacos data, dataId: 'nacos-config-client.properties', group: 'DEFAULT_GROUP'
Located property source: CompositePropertySource {name='NACOS', propertySources=[NacosPropertySource {name='nacos-config-client.properties'}]}
...
Refresh keys changed: [couse.title]

擴展

前面的例子要求 spring.application.name 配置成與 Nacos 中創建的 DataId 一致,只是爲了採用默認配置,減少配置量。
通過自定義配置可以實現對任意名稱的配置文件進行加載。

涉及配置項:

  • spring.cloud.nacos.config.prefix:配置文件前綴,如果沒有配置,則默認使用 spring.application.name
  • spring.cloud.nacos.config.file-extension:配置文件後綴,默認爲 properties
  • spring.cloud.nacos.config.group:配置文件分組,默認爲 DEFAULT_GROUP

Nacos 採用 Group + DataId 進行配置文件定位,其中 DataId = {prefix}.{file-extension}

如下配置,則會加載 DEV_GROUP 分組下的 example.yaml 文件

spring.cloud.nacos.config.prefix=example
spring.cloud.nacos.config.file-extension=yaml
spring.cloud.nacos.config.group=DEV_GROUP
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章