章节目标
基于前一章节:(一)SpringCloudAlibaba入门-注册中心
对项目demo-provider-service新增引入配置中心。
功能:
- 配置中心负责远程管理配置信息
- 配置中心属性热更新
配置中心作用
负责统一管理应用配置信息,以及配置信息的热更新。
环境准备
配置中心:nacos
jdk版本:jdk17
Spring Cloud Alibaba版本组合:
- Spring Boot 3.0.10
- Spring Cloud 2022.0.4
- Spring Cloud Alibaba 2022.0.0.0
步骤一:引入依赖
<!-- nacos配置中心依赖 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>
<!-- nacos配置中心-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
步骤二:新增bootstrap.yml配置
bootstrap优先于application加载。所以从bootstrap.yml内指定配置中心相关信息。
bootstrap.yml
spring:
application:
name: provider-service
cloud:
nacos:
config:
enabled: true
username: nacos
password: nacos
server-addr: 127.0.0.1:8848
file-extension: yaml
注意:配置中心需要加载的文件命名(data-id)规则为
${spring.application.name}-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
如果${spring.profiles.active}未指定,则data-id省略-,即
${spring.application.name}.${spring.cloud.nacos.config.file-extension}
其中spring.cloud.nacos.config.file-extension默认为properties。
步骤三:创建远程配置信息
登录nacos,创建配置信息,data-id名称为provider-service.yaml,类型为yaml。
验证结果
应用中删除application.yml,仅保留bootstrap.yml
启动provider-service服务,观察启动的结果以及nacos中配置信息的监听查询。
拓展:配置优先级问题
首先根据默认Spring Cloud规则而言远程配置优先于本地配置,此规则可以根据配置属性进行参数调整改变此策略。
其次远程配置优先级又遵循application-[profile]优先于application(此规则与SpringBoot配置文件优先级相同)。
拓展:如何使本地配置优先于远程配置
# 默认为false,设置为true:则是将配置中心优先级降为最低,即远程配置允许被本地配置所覆盖。
spring.cloud.config.override-none=true
注意:此属性必须配置于配置中心,而不是项目文件。
拓展:配置自动刷新
使用nacos作为配置中心可以使下面的情景下属性自动刷新:
说明:自动刷新即为热更新属性。在不重启服务的情况下,自动检测到属性变化并刷新值。
- @Value+@RefreshScope
- @ConfigurationProperties
场景:@Value+@RefereshScope
@RefreshScope
public class PropertiesController {
@Value("${refreshScopeVal}")
private String refreshScopeVal;
}
场景:@ConfigurationProperties
@Component
@ConfigurationProperties(prefix = "dynamic-props")
public class DynamicPropsBean {
private String val1;
}
本文暂时没有评论,来添加一个吧(●'◡'●)