1、导入依赖
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-nacos-config</artifactId>
</dependency>
2、创建bootstrap.properties文件,在其中对nacos配置中心进行配置
#应用名
spring.application.name=gulimall-product
#配置中心地址
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
#配置文件前缀
spring.cloud.nacos.config.prefix=product
3、创建application.properties,在其中配置一些数据
product.user.name=zhangsan
product.user.age=20
4、获取application.properties中的数据,进行测试,可以正常获取到配置文件中的值
@Value("${product.user.name}")
private String name;
@Value("${product.user.age}")
private String age;
@RequestMapping("/test1")
public void test1() {
System.out.println(name + " " + age);
}
Nacos Config 主要通过 dataId 和 group 来唯一确定一条配置。Nacos Client 从 Nacos Server 端获取数据时,调用的是此接口 ConfigService.getConfig(String dataId, String group, long timeoutMS)
在 Nacos Config Starter 中,dataId 的拼接格式如下
6、重启应用,重新测试,可以看到数据是从nacos中读取的。
7、目前修改了nacos中配置文件的值,需要重启应用才能更新。可以使用@RefreshScope动态刷新数据,将此注解加到指定的controller上
@RefreshScope
命名空间:用于进行租户粒度的隔离。不同命名空间下可以存在相同的Group或者Data ID配置。命名空间的常见应用场景是不同环境的配置的区分隔离,例如开发、测试环境和生产环境的配置隔离。
在命名空间菜单下,可以进行创建命名空间等操作,同时可以看到所有的命名空间。图片中有两个命名空间:public和product,public命名空间是默认就存在的。
当有多个命名空间时,可以通过命名空间id使用指定的命名空间。
配置集:一组相关或者不相关的配置项的集合称为配置集。在系统中,一个配置文件通常就是一个配
置集,包含了系统各个方面的配置。例如,一个配置集可能包含了数据源、线程池、日志级别等配置项。简单来说配置集就是配置的集合。
配置集ID:即Data ID。配置集 ID 是组织划分配置的维度之一。Data ID 通常用于组织划分系统的配置集。一个系统或者应用可以包含多个配置集,每个配置集都可以被一个有意义的名称标识。简单来说就是配置文件的名称。
配置分组:Nacos中的一组配置集,是组织配置的维度之一,通过一个字符串对配置集进行分组,从而区分Data ID相同的配置集。创建一个配置时,如果未填写配置分组的名称,则配置分组的名称默认为DEFAULT_GROUP。
在微服务项目中可以为每个服务建立一个命名空间,然后使用配置分组区分不同的环境。
如果我们创建了多个命名空间,默认会使用public命名空间中的对应配置文件。如果想要获取指定命名空间中的配置文件,可以在bootstrap.properties中使用spring.cloud.nacos.config.namespace指定命名空间
spring.cloud.nacos.config.namespace=75f4348e-ec88-46d0-b50e-394bff2dc4fe
如果我们在一个创建了多个配置分组,那么默认会加载DETAIL_GROUP配置分组中的数据,如果想获取指定分组中的数据,可以使用spring.cloud.nacos.config.group配置指定分组。
spring.cloud.nacos.config.group=dev
在开发中,我们不会把所有的配置写在一个配置文件中,而是会把它拆分为多个配置文件,那么当我们拆分为多个配置文件后,怎么在启动时同时加载这些配置文件呢?
nacos提供了spring.cloud.nacos.config.ext-config配置去加载多个配置文件
通过下面的方式去加载多个配置文件
#应用名
spring.application.name=gulimall-product
#配置中心地址
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
#指定配置集文件的名称
spring.cloud.nacos.config.prefix=product
#指定命名空间
spring.cloud.nacos.config.namespace=75f4348e-ec88-46d0-b50e-394bff2dc4fe
#加载多配置文件
spring.cloud.nacos.config.ext-config[0].data-id=datasource.yml
spring.cloud.nacos.config.ext-config[0].group=dev
spring.cloud.nacos.config.ext-config[0].refresh=true
spring.cloud.nacos.config.ext-config[1].data-id=mybatis.yml
spring.cloud.nacos.config.ext-config[1].group=dev
spring.cloud.nacos.config.ext-config[1].refresh=true