在開發 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 的配置自動更新功能正常。