首页 > 技术文章 > 从Nacos配置中心读取配置信息

nemowang1996 2020-07-31 09:35 原文

1. 项目中引入依赖

  要从nacos中读取配置,需要引入相关依赖。

1 <dependency>
2   <groupId>com.alibaba.cloud</groupId>
3    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
4 </dependency>

 

2. 在nacos中配置文件

在nacos的配置列表中添加相关文件。

添加好配置后,对应上图,有几个信息比较关键:

  1. namespace,命名空间id。命名空间可在左侧菜单栏的命名空间中管理。
  2. dataId,相当于文件名。
  3. 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 获取配置

 

推荐阅读