1. 項目中引入依賴
要從nacos中讀取配置,需要引入相關依賴。
1 <dependency> 2 <groupId>com.alibaba.cloud</groupId> 3 <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> 4 </dependency>
2. 在nacos中配置文件
在nacos的配置列表中添加相關文件。
添加好配置后,對應上圖,有幾個信息比較關鍵:
- namespace,命名空間id。命名空間可在左側菜單欄的命名空間中管理。
- dataId,相當於文件名。
- group,配置分組信息。
有了這三個參數,以及nacos服務的服務器地址,接下來就可以定位並讀取配置文件中的內容。
3. 讀取配置信息. 方法1:使用nacos提供的Java SDK
1 public static final String SERVER_ADDR = "127.0.0.1:8848"; 2 public static final String TEST_NAMESPACE = "5f86c5a7-3bf1-4108-966f-c25ebebf7803"; 3 4 /** 5 * 使用NacosFactory 從nacos配置中心獲取城市編碼列表 6 * @return 7 */ 8 @SneakyThrows 9 @GetMapping("getCityCodeListByNacosFactory") 10 public JSONArray getCityCodeListByNacosFactory() { 11 Properties properties = new Properties(); 12 // nacos服務器地址,127.0.0.1:8848 13 properties.put(PropertyKeyConst.SERVER_ADDR, SERVER_ADDR); 14 // 配置中心的命名空間id 15 properties.put(PropertyKeyConst.NAMESPACE, TEST_NAMESPACE); 16 ConfigService configService = NacosFactory.createConfigService(properties); 17 // 根據dataId、group定位到具體配置文件,獲取其內容. 方法中的三個參數分別是: dataId, group, 超時時間 18 String content = configService.getConfig("CityCodeList", "DEFAULT_GROUP", 3000L); 19 // 因為我的配置內容是JSON數組字符串,這里將字符串轉為JSON數組 20 return JSONUtil.parseArray(content); 21 }
使用NacosFactory提供的方法,通過服務器地址serverAddr、命名空間id namespace、dataId、group定位並讀取配置文件中的內容。
參考官方文檔:Nacos Java SDK 獲取配置
4. 讀取配置信息. 方法2:使用nacos提供的Open API
1 public static final String SERVER_ADDR = "127.0.0.1:8848"; 2 public static final String TEST_NAMESPACE = "5f86c5a7-3bf1-4108-966f-c25ebebf7803"; 3 4 /** 5 * 使用nacos的OPEN API 讀取配置中心的配置 6 * @return 7 */ 8 @GetMapping("getCityCodeListByNacosOpenAPI") 9 public JSONArray getCityCodeListByNacosOpenAPI() { 10 Map<String, Object> paramMap = new HashMap<>(3); 11 // 租戶信息,對應nacos命名空間id字段 12 paramMap.put("tenant", TEST_NAMESPACE); 13 // dataId 14 paramMap.put(Constants.DATAID, "CityCodeList"); 15 // group 16 paramMap.put(Constants.GROUP, "DEFAULT_GROUP"); 17 // url: http://127.0.0.1:8848/nacos/v1/cs/configs 18 String content = HttpUtil.get(SERVER_ADDR + "/nacos" + Constants.CONFIG_CONTROLLER_PATH, paramMap); 19 // 因為我的配置內容是JSON數組字符串,這里將字符串轉為JSON數組 20 return JSONUtil.parseArray(content); 21 }
調用nacos提供的Open API接口,發送get請求,獲取配置文件中的內容。
參考官方文檔:Nacos Open API 獲取配置