Spring Cloud SOFA DRM 可为应用带来外部化配置支持。它依托于 SOFA DRM 分布式配置管理(Distributed Resource Management),提供高实时性、高一致性、动态下发的配置管理能力。您无需重启应用,即可通过 DRM 动态配置服务对应用中的配置进行动态刷新。
在项目工程中添加 Spring Cloud SOFA DRM 依赖:
不要配置版本,版本由 dependencyManagement 控制。
<dependency>
<groupId>com.alipay.cloud</groupId>
<artifactId>spring-cloud-starter-sofa-drm</artifactId>
</dependency>
Bootstrap 模式
引入依赖。
Spring Cloud Hoxton 及以前版本,默认采用 Bootstrap 模式进行配置加载,在 Spring Cloud 2020 版本之后,如果还希望采用 Bootstrap 模式进行配置管理,则需要在项目中引入依赖。
<dependency> <groupId>com.alipay.cloud</groupId> <artifactId>spring-cloud-starter-bootstrap</artifactId> </dependency>
配置
bootstrap.properties
文件。Bootstrap 模式需要在项目中配置
bootstrap.properties
(也可以使用 YAML 格式)文件,请将其放在application.properties
(或application.yml
)文件同级目录。写入以下信息:spring.application.name={your project name} spring.cloud.sofa.instanceid={sofa middleware instance id} spring.cloud.sofa.acvip.endpoint={sofa acvip lb address} spring.cloud.sofa.mw.access={sofa middleware ak, optional} spring.cloud.sofa.mw.secret={sofa middleware sk, optional}
以上配置说明请参考添加公共配置。项目中启用了 Bootstrap 动态配置,且在
bootstrap.properties
配置了以上信息,则application.properties
中无需重复配置。添加 RefreshScope 注解。
在项目中,使用 Spring Cloud 的编程模型,对于需要进行动态配置变更的 Bean 添加 RefreshScope 注解。
新增动态配置。
配置完毕后,在微服务控制台配置以下参数。配置方式请参见 新增动态配置。
推送动态配置。
推送动态配置的操作请参见推送动态配置。在 “推送值” 文本框中填写
properties
格式的配置,点击推送配置,即可修改应用配置。添加了 RefreshScope 注解的 Bean 中的 @Value 属性会自动更新。
Config Data 模式
配置
application.yml
文件。在 Spring Cloud 2020 版本之后,默认使用 Config Data 模式进行配置加载。如果项目中没有引用
spring-cloud-starter-bootstrap
,则会自动启用该模式。该模式无需再额外配置bootstrap.properties
文件,只需要在application.yml
(也可以是 properties 格式,以下以 YAML 格式为例) 中配置 spring:spring: application: name: {your project name} config: import: "drm:"
在配置中同样要加上金融云中间件的公共配置,详情请参见添加公共配置。
在应用中对需要进行动态配置的属性添加 RefreshScope 和 Value 注解。
这部分与 Bootstrap 模式完全一致。
添加动态配置。
说明此处配置的类标识与 Bootstrap 模式不同,没有携带 properties 后缀,请参考配置说明了解配置细节。
推送配置。
配置 Bootstrap 模式一致,新建 configuration 属性并通过 properties 格式进行配置即可。