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 获取配置