全部產品
Search
文件中心

Application Configuration Management(Deprecated):Nacos Spring Cloud

更新時間:Jul 06, 2024

在開發 Spring Cloud 應用時,您可以使用 Nacos (https://nacos.io)在本地實現 Spring Cloud 應用的組態管理。

前提條件

  • 登入 ACM控制台,並建立一個樣本配置。

    • Data ID:com.alibaba.nacos.example.properties
    • Group:不填寫,即使用預設的 DEFAULT_GROUP
    • 配置格式:Properties
    • 配置內容:connectTimeoutInMills=3000
  • (可選)下載範例工程

操作步驟

  1. 在 Maven 專案的 pom.xml 檔案中增加以下配置來擷取 Starter。
    <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        <version>${latest.version}</version>
    </dependency>
    說明 使用時請根據 Spring Boot 版本選擇相應的 spring-cloud-starter-alibaba-nacos-config 版本。
    Spring Cloud Version Spring Cloud Alibaba Version Spring Boot Version
    Spring Cloud Hoxton 2.2.0.RELEASE 2.2.X.RELEASE
    Spring Cloud Greenwich 2.1.1.RELEASE 2.1.X.RELEASE
    Spring Cloud Finchley 2.0.1.RELEASE 2.0.X.RELEASE
    Spring Cloud Edgware 1.5.1.RELEASE 1.5.X.RELEASE
  2. bootstrap.properties 檔案中配置串連資訊。

    說明 請將代碼中的 ${endpoint}${namespace}${accessKey}${secretKey} 分別替換為 ACM 控制台上命名空間詳情對話方塊內的 End Point命名空間 IDAccessKeySecretKey。出於安全考慮,建議使用 RAM 使用者的 AccessKey 和 SecretKey。
    spring.cloud.nacos.config.endpoint=${endpoint}
    spring.cloud.nacos.config.namespace=${namespace}
    # 推薦使用 RAM 使用者的 accessKey 和 secretKey
    spring.cloud.nacos.config.access-key=${accessKey}
    spring.cloud.nacos.config.secret-key=${secretKey}
    # 配置的 Data ID 等於 ${spring.application.name}.${spring.cloud.nacos.config.file-extension}
    # 指定配置的 Data ID 首碼,例如:
    spring.application.name=com.alibaba.nacos.example
    # 指定配置的 Data ID 尾碼,支援 properties、yaml、yml,預設為 properties
    spring.cloud.nacos.config.file-extension=properties
    # 指定 ACM 配置的 Group,預設為 DEFAULT_GROUP
    spring.cloud.nacos.config.group=DEFAULT_GROUP
    說明 ACM 配置的 Data ID 的約定格式為 ${spring.application.name}.${spring.cloud.nacos.config.file-extension}。本例中對應的 ACM 配置的 Data ID 為 com.alibaba.nacos.example.properties
  3. 使用 Spring 的註解 @Value 設定屬性值,使用 Spring Cloud 原生註解 @RefreshScope 實現配置自動更新。

    @RestController
    @RequestMapping("/config")
    @RefreshScope
    public class ConfigController {
    
        @Value("${connectTimeoutInMills:5000}")
        private int connectTimeoutInMills;
    
        public void setConnectTimeoutInMills(int connectTimeoutInMills) {
            this.connectTimeoutInMills = connectTimeoutInMills;
        }
    
        @RequestMapping(value = "/get", method = GET)
        @ResponseBody
        public int get() {
            return connectTimeoutInMills;
        }
    }

結果驗證

  1. 在本地啟動專案,並運行以下命令:

    curl localhost:8080/config/get

    若返回以下資訊,則說明 SDK 可正常使用。

    3000
  2. 在 ACM 控制台將樣本配置 com.alibaba.nacos.example.properties 更改為以下內容並發布。

    connectTimeoutInMills=6000

    若 Console 列印出更新的配置內容 ,則說明 SDK 的配置自動更新功能正常。

更多資訊