本文說明如何使用 Nacos Spring SDK 管理 ACM 配置。

前提條件

  • 登錄 ACM控制臺,并創建一個示例配置。

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

操作步驟

  1. 在 Maven 項目的 pom.xml 文件中增加以下配置來獲取 Nacos Spring SDK。

    <dependency>
        <groupId>com.alibaba.nacos</groupId>
        <artifactId>nacos-spring-context</artifactId>
        <version>${latest.version}</version>
    </dependency>
  2. 使用 @EnableNacosConfig 注解啟用 Nacos Spring 的配置管理服務。

    說明 請將代碼中的 ${endpoint}${namespace}${accessKey}${secretKey} 分別替換為 ACM 控制臺上命名空間詳情對話框內的 End Point命名空間 IDAccessKeySecretKey。出于安全考慮,建議使用 RAM 用戶的 AccessKey 和 SecretKey。
    @Configuration
    @EnableNacosConfig(globalProperties = @NacosProperties(
        endpoint = "${endpoint}", 
        namespace = "${namespace}",
        accessKey = "${accessKey}", 
        secretKey = "${secretKey}"
    ))
  3. 使用 @NacosPropertySource 注解加載配置源,并開啟自動更新。

    說明 實際開發時,請將 com.alibaba.nacos.example.properties 替換成真實的 ACM 配置 Data ID。
    @NacosPropertySource(dataId = "com.alibaba.nacos.example.properties", autoRefreshed = true)
    public class NacosConfiguration {
    
    }
  4. 使用 @NacosValue 注解設置屬性值。

    @Controller
    @RequestMapping("config")
    public class ConfigController {
    
        @NacosInjected
        private ConfigService configService;
    
        @NacosValue(value = "${connectTimeoutInMills:5000}", autoRefreshed = true)
        private int 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 的配置自動更新功能正常。

更多信息