此配置必须在 bootstrap.yml 文件中。 spring.cloud.nacos.config.namespace 的值是命名空间的 ID,可以从 Nacos 控制台中检索 ID 的值。 添加配置时,请勿选择其他名称空间。 否则,将无法正确检索配置。
❞ 发布配置选择 配置管理 的 配置列表 页面,选择 dev 环境,点击最右侧 + 按钮新建配置。
Nacos Config 使用 Data ID 和 Group 来确定配置。
下图显示 Data Id 为 product-service.yaml,组使用默认组,并添加 yaml 格式的配置信息。
project: name: SpringCloudAlibaba-DEV org: Aliababa 获取配置 配置文件bootstrap.yml
server: port: 7070 # 端口 spring: application: name: product-service # 应用名称 cloud: nacos: config: enabled: true # 如果不想使用 Nacos 进行配置管理,设置为 false 即可 server-addr: 127.0.0.1:8848 # Nacos Server 地址 group: DEFAULT_GROUP # 组,默认为 DEFAULT_GROUP file-extension: yaml # 配置内容的数据格式,默认为 properties namespace: 450a3f07-08ee-49f6-8213-9b04b06cd3cc # 对应 dev 环境 控制层使用 Spring 的 @Value 注解来获取配置信息,${} 中对应 Nacos 配置中心配置内容的 key,:后跟默认值。
并且通过 Spring Cloud 原生注解 @RefreshScope 实现配置自动更新。
package org.example.controller; import org.springframework.beans.factory.annotation.Value; import org.springframework.cloud.context.config.annotation.RefreshScope; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; import java.util.HashMap; import java.util.Map; @RefreshScope @RestController public class ConfigController { @Value("${project.name:}") private String projectName; @Value("${project.org:}") private String projectOrg; @GetMapping("/config") public Map<String, Object> getConfig() { Map<String, Object> configMap = new HashMap(); configMap.put("projectName", projectName); configMap.put("projectOrg", projectOrg); return configMap; } } 测试访问::7070/config 结果如下:
Group 组Group 组信息可以在新建配置时进行指定,如下图:
配置管理这一小节我们通过大量配图演示控制台的相关操作。
新建/编辑/删除/查询右侧 + 新建配置。单条编辑或删除选择操作栏中的编辑或删除。批量删除勾选以后选择左下角红色删除。
可以通过 Data Id 和 Group 查询配置,还可以将查询结果导出。
导入/导出/克隆前文提到命名空间用于隔离多个环境,每个应用在不同环境的同一个配置(如数据库数据源)的值是不一样的。也就是说可能大量的配置项都是相同的,个别差异的配置项需要额外修改,在这种情况下,如果一条条重新添加肯定非常不友好,我们可以通过导入导出功能实现。
比如,我们将 dev 环境下的配置先全选导出。
然后在 test 环境中导入,文件上传后将直接导入配置,请务必谨慎操作!
通过克隆也可以达到相同的效果,不同的是克隆可以额外修改 Data Id 和 Group 信息。
历史/回滚选择 配置管理 的 历史版本 页面,通过 Data Id 和 Group 查询历史,可以查看每个历史版本的详情,或选择回滚至该版本。
监听查询Nacos 提供配置订阅者,也就是监听者查询能力,同时提供客户端当前配置的 MD5 校验值,以便帮助用户更好的检查配置变更以后是否推送到 Client 端。
选择 配置管理 的 监听查询 页面,通过 配置或IP、Data Id 和 Group 查询。
权限控制Nacos 提供了基于 RBAC 的权限控制,通过左侧 权限控制 菜单的 用户列表、角色管理、权限管理实现,可以算是傻瓜式操作了,鼠标多点几下就会了。
公共配置每个配置集对应一个应用,但是开发时我们可能会有一些公共配置被多个应用使用,这时候就需要扩展配置集或共享配置集来实现了。
扩展配置集我们先创建三个配置集,如下:
Data ID: ext-config-common01.yaml Group: DEFAULT_GROUP Configuration format: YAML Configuration content: common.name: common-serviceData ID: ext-config-common02.yaml
Group: GLOBAL_GROUP
Configuration format: YAML
Configuration content: global.name: global-service