从Nacos配置中心读取配置信息
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 获取配置