在开发 Spring Cloud 应用时,您可以使用 Nacos (https://nacos.io)在本地实现 Spring Cloud 应用的配置管理。
前提条件
操作步骤
- 在 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 -
在 bootstrap.properties 文件中配置连接信息。
说明 请将代码中的 ${endpoint}、${namespace}、${accessKey}、${secretKey} 分别替换为 ACM 控制台上命名空间详情对话框内的 End Point、命名空间 ID、AccessKey、SecretKey。出于安全考虑,建议使用 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
。 -
使用 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; } }
结果验证
在本地启动项目,并运行以下命令:
curl localhost:8080/config/get
若返回以下信息,则说明 SDK 可正常使用。
3000
在 ACM 控制台将示例配置
com.alibaba.nacos.example.properties
更改为以下内容并发布。connectTimeoutInMills=6000
若 Console 打印出更新的配置内容 ,则说明 SDK 的配置自动更新功能正常。