配置说明

配置模型

Spring Cloud SOFA DRM 的配置模型延续自 DRM 的原生模型,对其进行了一定的约束。

配置属性

说明

不可变值,由控制台自动写入

所属应用

应用配置为spring.application.name配置的值,共享配置可自定义。

类标识

默认为 application,可自定义。

属性

不可变值,由控制台自动写入。

每个应用均可配置多个动态配置,通过类标识区分。以下进行配置描述时,为简化描述信息,仅针对所属应用和类标识这些可定义内容进行说明,其他固定属性略去不表。

Bootstrap 模式

在 Bootstrap 模式中:

  • Spring Cloud SOFA DRM 会订阅三个配置,分别是:applicationapplication.{fileExtension}application-{profile}.{fileExtension}

    三个配置的优先级为:application < application.{fileExtension} < application-{profile}.{fileExtension},您可以按需进行配置。

  • 类标识可通过spring.cloud.drm.config.name进行配置,默认为 application。

  • 类标识中的fileExtension可通过spring.cloud.drm.config.file-extension进行配置。例如配置了 YML 格式,则订阅的配置就会变成:applicationapplication.ymlapplication-{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