本文说明如何使用 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 的配置自动更新功能正常。

更多信息