使用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