SpringCloud Alibaba-Nacos作为配置中心

使用Nacos Config Starter 完成Spring Cloud应用的配置管理

如何接入

1、修改pom.xml文件,引入Nacos Config Starter

<dependency>
     <groupId>com.alibaba.cloud</groupId>
     <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
 </dependency>

2、在应用的 /src/main/resources/bootstrap.properties 配置文件中配置 Nacos Config 元数据

#服务名称
spring.application.name=nacos-config-example
#配置中心的地址
spring.cloud.nacos.config.server-addr=127.0.0.1:8848

3、需要给配置中心默认添加一个叫 数据集(Data Id)gulimall-coupon.properties。默认规则,应用名.properties

DATA ID 为红线处的文字

4、给 应用名.properties 添加任何配置

5、完成上述两步后,应用会从 Nacos Config 中获取相应的配置,并添加在 Spring Environment 的 PropertySources 中。这里我们使用 @Value 注解来将对应的配置注入到 SampleController 的 userName 和 age 字段,并添加 @RefreshScope 打开动态刷新功能

@RefreshScope
 class SampleController {

 	@Value("${user.name}")
 	String userName;

 	@Value("${user.age}")
 	int age;
 }

@RefreshScope:动态获取并刷新配置 @Value("${配置项的名}"):获取到配置。

6、如果配置中心和当前应用的配置文件中都配置了相同的项,优先使用配置中心的配置

Nacos细节

1、命名空间

用于多租户数据(配置和服务)隔离,可以在相同的Group和Data ID的配置。NameSpace的常用场景之一是不同环境的配置的区分隔离,例如开发测试环境和生产环境的资源(如配置、服务)隔离等。

默认:public(保留空间),默认新增的所有配置都在public空间

1、开发、测试、生产,利用命名空间来做环境隔离。注意:在bootstrap.pro[erties配置上,需要使用哪个命名空间下的配置

,等号后面的是nacos中命名空间的唯一id

2、每个微服务之间互相隔离配置,每一个微服务都创建自己的命名空间,只加载自己命名空间下的所有配置

2、配置集

一组相关或者不相关的配置项的集合称为配置集。在系统中,一个配置文件通常就是一个配置集,包含了系统各个方面的配置。例如,一个配置集可能包含了数据源、线程池、日志级别等配置项。

3、配置集ID

类似于配置文件名

4、配置分组

默认所有的配置集都属于:DEFAULT_GROUP

使用某个配置集:spring.cloud.nacos.config.group=分组名称

每个微服务创建自己的命名空间,使用配置分组区分环境。dev、test、prod

5、同时加载多个配置项

1)、微服务任何配置信息,任何配置文件都可以放在配置中心中

2)、只需要在bootstrap.properties说明加载配置中心中哪些配置文件即可

3)、@Value,@ConfigurationProperties。。。

以前SpringBoot任何方法从配置文件中获取值,都能使用。

配置中心有的优先使用配置中心中的,

spring.application.name=gulimall-coupon

spring.cloud.nacos.config.server-addr=127.0.0.1:8848
spring.cloud.nacos.config.namespace=61cb53ac-4708-4cde-ac1e-361a42b46a76
spring.cloud.nacos.config.group=dev

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

spring.cloud.nacos.config.ext-config[2].data-id=other.yml
spring.cloud.nacos.config.ext-config[2].group=dev
spring.cloud.nacos.config.ext-config[2].refresh=true
经验分享 程序员 微信小程序 职场和发展