SpringCloudSpring Cloud Alibaba 之 Nacos配置中心(二十八)
Posted H__D
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpringCloudSpring Cloud Alibaba 之 Nacos配置中心(二十八)相关的知识,希望对你有一定的参考价值。
上一章介绍了Nacos作为注册中心的使用,本章介绍Nacos作为配置中心
示例代码沿用上一章代码
Nacos配置客户端搭建
1、在父项目(test-springcloud)中,新建配置客户端模块(springcloud-config-nacos-client8901)
2、在pom中,依赖Nacos配置依赖
1 <!-- alibaba nacos config --> 2 <dependency> 3 <groupId>com.alibaba.cloud</groupId> 4 <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> 5 </dependency>
完整pom如下:
1 <?xml version="1.0" encoding="UTF-8"?> 2 <project xmlns="http://maven.apache.org/POM/4.0.0" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 5 <parent> 6 <artifactId>test-springcloud</artifactId> 7 <groupId>com.test</groupId> 8 <version>1.0-SNAPSHOT</version> 9 </parent> 10 <modelVersion>4.0.0</modelVersion> 11 12 <artifactId>springcloud-config-nacos-client8901</artifactId> 13 14 <dependencies> 15 16 <!-- alibaba nacos config --> 17 <dependency> 18 <groupId>com.alibaba.cloud</groupId> 19 <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> 20 </dependency> 21 22 <!-- alibaba nacos discovery --> 23 <dependency> 24 <groupId>com.alibaba.cloud</groupId> 25 <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> 26 </dependency> 27 28 <!-- spring boot --> 29 <dependency> 30 <groupId>org.springframework.boot</groupId> 31 <artifactId>spring-boot-starter-web</artifactId> 32 </dependency> 33 <dependency> 34 <groupId>org.springframework.boot</groupId> 35 <artifactId>spring-boot-starter-actuator</artifactId> 36 </dependency> 37 <dependency> 38 <groupId>org.springframework.boot</groupId> 39 <artifactId>spring-boot-devtools</artifactId> 40 <scope>runtime</scope> 41 <optional>true</optional> 42 </dependency> 43 <dependency> 44 <groupId>org.projectlombok</groupId> 45 <artifactId>lombok</artifactId> 46 <optional>true</optional> 47 </dependency> 48 <dependency> 49 <groupId>org.springframework.boot</groupId> 50 <artifactId>spring-boot-starter-test</artifactId> 51 <scope>test</scope> 52 </dependency> 53 54 </dependencies> 55 </project>
3、在启动引导配置文件bootstrap.yml中,添加如下配置:
1 spring: 2 application: 3 name: nacos-config-client 4 cloud: 5 nacos: 6 discovery: 7 server-addr: localhost:8848 8 config: 9 server-addr: localhost:8848 10 # 配置内容文件的数据格式,默认值:properties 11 file-extension: yaml
4、在配置文件application.yml中,添加如下配置:
1 # 端口 2 server: 3 port: 8901 4 5 spring: 6 profiles: 7 # 表示开发环境 8 active: dev
5、编写启动类
1 @EnableDiscoveryClient 2 @SpringBootApplication 3 public class NacosConfigClientMain8901 { 4 public static void main(String[] args) { 5 SpringApplication.run(NacosConfigClientMain8901.class, args); 6 } 7 }
6、编写一个controller,如下:
1 @RestController 2 // 原生注解,支持Nacos动态刷新功能 3 @RefreshScope 4 public class ConfigClientController { 5 6 @Value("${config.info}") 7 private String configInfo; 8 9 @GetMapping("/config/info") 10 public String getConfigInfo(){ 11 return configInfo; 12 } 13 }
到此客户端搭建完整
Nacos中添加配置文件
1、在Nacos的Web界面中——〉配置列表——〉“+”号,添加配置,如下:
2、点击发布按钮,即完成配置文件添加
3、测试
1)启动Nacos服务、Nacos配置客户端项目
2)访问地址:http://localhost:8901/config/info,正常访问
3)在Nacos的Web界面中,修改配置文件内容,将version改为 2
访问地址:http://localhost:8901/config/info,version动态修改成2了
4)查看控制台输出内容
由于代码中增加了@RefreshScope,刷新原生注解,此注解也支持Nacos动态刷新配置功能,所以当配置文件修改或,能动态刷新配置
Nacos配置文件
DataId
在nacos中,新增配置时,需要增加dataId,在 Nacos Spring Cloud 中,dataId 的完整格式如下:
1 ${prefix}-${spring.profile.active}.${file-extension}
1)prefix 默认为 spring.application.name 的值,也可以通过配置项 spring.cloud.nacos.config.prefix来配置。
2)spring.profile.active 即为当前环境对应的 profile,详情可以参考 Spring Boot文档。 注意:当 spring.profile.active 为空时,对应的连接符 - 也将不存在,dataId 的拼接格式变成 ${prefix}.${file-extension}
3)file-exetension 为配置内容的数据格式,可以通过配置项 spring.cloud.nacos.config.file-extension 来配置。目前只支持 properties 和 yaml 类型。
Nacos加载配置(Namespace + GroupId + DataId)
nacos客户端,在加载nacos服务上的配置时,先去找nacos服务上查找对应的Namespace(命名空间)-〉查找对应的Group(组)-〉查询对应的DataId(配置集 ID)
Namespace(命名空间):用于进行租户粒度的配置隔离。不同的命名空间下,可以存在相同的 Group 或 Data ID 的配置。Namespace 的常用场景之一是不同环境的配置的区分隔离,例如开发测试环境和生产环境的资源(如配置、服务)隔离等,保留空间为public。
Group(组):Nacos 中的一组配置集,是组织配置的维度之一。通过一个有意义的字符串(如 Buy 或 Trade )对配置集进行分组,从而区分 Data ID 相同的配置集。当您在 Nacos 上创建一个配置时,如果未填写配置分组的名称,则配置分组的名称默认采用 DEFAULT_GROUP 。配置分组的常见场景:不同的应用或组件使用了相同的配置类型,如 database_url 配置和 MQ_topic 配置。
DataId(配置集 ID):Nacos 中的某个配置集的 ID。配置集 ID 是组织划分配置的维度之一。Data ID 通常用于组织划分系统的配置集。一个系统或者应用可以包含多个配置集,每个配置集都可以被一个有意义的名称标识。Data ID 通常采用类 Java 包(如 com.taobao.tc.refund.log.level)的命名规则保证全局唯一性。此命名规则非强制。
Namespace、Group和DataId的关系如下:
DataId(配置集 ID)示例
1、在Nacos中分别新增2个配置文件,如下:
nacos-config-client-test.yaml,内容:
1 config: 2 info: nacos config center, nacos-config-client-test.yaml, version = 1
2、修改配置客户端模块内容,application.yml配置,如下:
1 spring: 2 profiles: 3 # 表示开发环境 4 active: test
3、重新启动项目,访问地址:http://localhost:8901/config/info,获取到的是nacos-config-client-test.yaml文件的内容
Group(组)示例
1、在Nacos的Web界面中——〉配置列表——〉“+”号,添加配置,在新的组(BJ_GROUP)中,如下:
配置列表
2、修改配置客户端模块内容,
application.yml,配置如下:
1 # 端口 2 server: 3 port: 8901 4 5 spring: 6 profiles: 7 # 表示开发环境 8 active: dev
bootstrap.yml,增加group,配置如下:
1 spring: 2 application: 3 name: nacos-config-client 4 cloud: 5 nacos: 6 discovery: 7 server-addr: localhost:8848 8 config: 9 server-addr: localhost:8848 10 # 配置内容文件的数据格式,默认值:properties 11 file-extension: yaml 12 group: BJ_GROUP
3、重新启动项目,访问地址:http://localhost:8901/config/info,获取到的是BJ_GROUP分组中,nacos-config-client-dev.yaml文件的内容
Namespace(命名空间)示例
1、在Nacos的Web界面中——〉命名空间菜单——〉新建命名空间,如下:
命名空间列表
1、在Nacos的Web界面中——〉配置列表——〉选择“DEV”命名空间——〉“+”号,添加配置,如下:
新增内容:
2、修改配置客户端模块内容
application.yml配置:
1 # 端口 2 server: 3 port: 8901 4 5 spring: 6 profiles: 7 # 表示开发环境 8 active: dev
bootstrap.yml配置
1 spring: 2 application: 3 name: nacos-config-client 4 cloud: 5 nacos: 6 discovery: 7 server-addr: localhost:8848 8 config: 9 server-addr: localhost:8848 10 # 配置内容文件的数据格式,默认值:properties 11 file-extension: yaml 12 group: SZ_GROUP 13 # 命名空间ID 14 namespace: c17382d8-9c38-4b21-b4e8-7f8a802788e2
3、重新启动项目,访问地址:http://localhost:8901/config/info,获取到的是DEV命名空间-〉BJ_GROUP分组-〉nacos-config-client-dev.yaml文件的内容
以上是关于SpringCloudSpring Cloud Alibaba 之 Nacos配置中心(二十八)的主要内容,如果未能解决你的问题,请参考以下文章
SpringCloudSpring Cloud Config 配置中心(二十)
SpringCloudSpring Cloud Config 客户端(二十一)
SpringCloudSpring Cloud Alibaba 及 Nacos介绍(二十六)
SpringCloudSpring Cloud Alibaba 之 Nacos配置中心(二十八)