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