配置模型
Spring Cloud SOFA DRM 的配置模型延续自 DRM 的原生模型,对其进行了一定的约束。
配置属性 | 说明 |
域 | 不可变值,由控制台自动写入 |
所属应用 | 应用配置为 |
类标识 | 默认为 application,可自定义。 |
属性 | 不可变值,由控制台自动写入。 |
每个应用均可配置多个动态配置,通过类标识区分。以下进行配置描述时,为简化描述信息,仅针对所属应用和类标识这些可定义内容进行说明,其他固定属性略去不表。
Bootstrap 模式
在 Bootstrap 模式中:
Spring Cloud SOFA DRM 会订阅三个配置,分别是:
application
、application.{fileExtension}
、application-{profile}.{fileExtension}
。三个配置的优先级为:
application
<application.{fileExtension}
<application-{profile}.{fileExtension}
,您可以按需进行配置。类标识可通过
spring.cloud.drm.config.name
进行配置,默认为 application。类标识中的
fileExtension
可通过spring.cloud.drm.config.file-extension
进行配置。例如配置了 YML 格式,则订阅的配置就会变成:application
、application.yml
、application-{profile}.yml
这三个,配置的格式也需要根据 YML 文件格式进行编辑。DRM支持 properties、YML、Json、XML 四种配置格式。DRM 的配置前缀为
spring.cloud.sofa.config
,完整的配置选项如下:配置项
配置说明
默认值
name
配置类标识。
application
fileExtension
配置格式。
properties
connectTimeout
首次从 DRM 拉取配置时的连接超时时间。
3000
timeout
首次从 DRM 拉取配置时的读超时时间。
3000
refreshEnabled
是否开启配置刷新。
true
extensionConfigs
扩展配置。
无
sharedConfigs
共享配置。
无
Spring Cloud SOFA DRM 支持扩展的配置。通过
spring.cloud.drm.config.extension-configs
进行配置,示例如下(配置在bootstrap.properties
中):# 第一个扩展配置,类标识为 ext-config-01,文件格式为 properties,支持刷新 spring.cloud.sofa.config.extension-configs[0].data-id=ext-config-01 spring.cloud.sofa.config.extension-configs[0].refresh=true # 第二个扩展配置,类标识为 ext-config-02.yml,文件格式为 yml,不支持刷新 spring.cloud.sofa.config.extension-configs[1].data-id=ext-config-02.yml
扩展配置可配置多个,可通过在
dataId
属性上直接加.XX
的方式指定配置文件类型,默认为properties
。默认扩展配置不支持刷新,需要通过 refresh 属性来配置。说明指定了文件类型的 dataId 就是完整的类标识。
多个
dataId
同时配置时,其优先级关系是:spring.cloud.sofa.config.extension-configs[n].data-id
中 n 的值越大,优先级越高。
Spring Cloud SOFA DRM 还支持共享配置,可在多个应用间使用同一套配置。示例如下(配置在
bootstrap.properties
中):# 第一个共享配置,类标识为 share-config-01,所属应用为 rpc,文件格式为 properties,支持刷新 spring.cloud.sofa.config.shared-configs[0].data-id=share-config-01 spring.cloud.sofa.config.shared-configs[0].group=rpc spring.cloud.sofa.config.shared-configs[0].refresh=true # 第二个共享配置,类标识为 share-config-02.yml,所属应用为 share,文件格式为 yml,不支持刷新 spring.cloud.sofa.config.shared-configs[1].data-id=share-config-02.yml
共享配置与扩展配置的配置规则基本一致,只有 Key 的区别,优先级关系也与扩展配置一样。
共享配置的所属应用名是可配置的,通过
spring.cloud.sofa.config.shared-configs[n].group
进行配置,默认为“share”。因为这个配置是要在多个应用间共享的,不能指定具体应用名,而是用于标识配置所属的范围。共享配置可视为是某个功能的全局的配置模板,还可以通过扩展配置和应用配置进行覆盖。当以上三种配置都使用的情况下,其优先级关系是:共享配置 < 扩展配置 < 应用配置。
Config Data 模式
Config Data 模式的实现方式与 Bootstrap 模式有所不同,因此面向 Bootstrap 模式的配置并不适用于 Config Data 模式,从快速开始文档中已经体验了最简化的 Config Data 模式配置,以下是一个更完整的示例:
spring:
application:
name: {your project name}
config:
import:
- "drm:share-config-01.properties?group=rpc&refreshEnabled=true"
- "drm:ext-config-01.yml"
- "drm:"
- "optional:drm:application1.properties"
Config Data 模式需要通过
spring.config.import
属性进行设置,允许设置多个配置。其优先级按配置顺序,最下面的优先级最大,无法像 Bootstrap 模式那样通过不同类型配置做优先级区分,所以使用时请自行根据优先级需求进行排列。由于它只能在一个字符串中标记配置信息,因此采用了类似 URL 的格式填写参数。格式为drm:{类标识}.{配置格式}?k1=v1&k2=v2
。其中配置格式非必须,默认为 properties。
connectTimeout、timeout、refreshEnabled 的配置与 Bootstrap 模式配置一致,只是不需要配置到
bootstrap.properties
文件中了,直接在application.properties
文件中配置。
使用 DRM 原生注解编程
除了支持 Spring Cloud 编程界面外,Spring Cloud SOFA DRM 也同样支持 DRM 原生注解编程,使用方式与 SOFABoot 完全一致,详情请参见动态配置快速入门。
完全关闭配置
您可以在application.properties
文件中设置spring.cloud.sofa.config.enabled = false
来完全关闭 Spring Cloud SOFA DRM 的动态配置功能。
spring.cloud.sofa.config.enabled=false
完整配置参考
以下是 Spring Cloud SOFA DRM 模块提供的所有配置项:
配置名称 | 配置说明 | 默认值 |
spring.cloud.sofa.config.name | 配置名称。 | application |
spring.cloud.sofa.config.file-extension | 配置类型。 | properties |
spring.cloud.sofa.config.connect-timeout | 与服务器的连接的超时时间,用于设置首次拉取配置时的最长等待。 | 3000(毫秒) |
spring.cloud.sofa.config.timeout | 读服务器的超时时间,用于设置首次拉取配置时最长等待。 | 3000(毫秒) |
spring.cloud.sofa.config.refresh-enabled | 是否允许动态刷新。若关闭,则配置仅在启动时拉取一次,运行时无法动态更新。 | true |
spring.cloud.sofa.config.shared-configs | 共享配置,详情请参见 Bootstrap 模式。 | 无 |
spring.cloud.sofa.config.extension-configs | 扩展配置,详情请参见 Bootstrap 模式。 | 无 |
spring.cloud.sofa.config.enabled | 全局开关。 | true |
spring.cloud.sofa.config.import-check.enabled | 仅在 Config Data 模式生效。默认情况下,在引入 DRM 模块后,如果不导入 DRM 配置会抛出异常,关闭此配置则允许不导入 DRM 动态配置。 | true |