18 配置
大多数应用程序都需要一定程度的配置。这可以用来指定要使用的正确外部资源(数据库、其他服务等)、调整性能或以其他方式调整以满足给定环境的要求。Ratpack 提供了一种简单灵活的机制来访问 Ratpack 应用程序中的配置信息。
配置数据是通过使用 Jackson 的对象绑定来访问的。Ratpack 提供的配置对象旨在开箱即用。配置数据可以从多个来源加载,例如 YAML 文件、JSON 文件、属性文件、环境变量和系统属性。
1.18 快速入门
要开始
- 在您的
RatpackServer
定义函数中,构建一个ConfigData
实例(有关示例,请参见类文档) - 从配置数据中检索绑定的配置对象
2.18 配置来源
ConfigDataBuilder
提供了方法来轻松地从最常见的来源加载数据。
可以使用 yaml
、json
和 props
方法使用常用的文件格式。提供的签名可用于从本地文件(String
或 Path
)、网络(URL
)、类路径(使用 Resources.getResource(String)
获取 URL
)或任何其他可以作为 ByteSource
处理的位置加载数据。此外,您可以从非文件来源加载数据,例如 Map
/Properties
对象(对于默认值特别有用;请参见 示例)、系统属性和环境变量。您还可以选择使用 object
方法从现有对象加载配置数据。如果需要额外的灵活性,您可以提供自己的 ConfigSource
实现。
1.2.18 扁平配置来源
环境变量、Properties
和 Map
是扁平的数据结构,而 Ratpack 使用的绑定模型是分层的。为了弥合这一差距,这些配置源实现应用了约定,允许将扁平的键值对转换为有用的数据。
1.1.2.18 环境变量
默认环境变量配置源使用以下规则
- 只考虑匹配给定前缀(默认情况下为
RATPACK_
)的环境变量;此前缀在进一步处理之前将被删除 - 环境变量名称使用双下划线作为对象边界拆分为每个对象的段
- 段使用单个下划线作为单词边界转换为驼峰式字段名称。
如果需要自定义环境解析,您可以提供 EnvironmentParser
实现。
2.1.2.18 属性/映射
默认 Properties
/Map
配置源使用以下规则
- 如果从系统属性加载,只考虑匹配给定前缀(默认情况下为
ratpack.
)的键;此前缀在进一步处理之前将被删除 - 键使用点(“.”)作为对象边界拆分为每个对象的段
- 方括号之间的整数索引可用于填充列表
- 这对于简单值(字符串)和对象(然后将在索引之后具有额外的段)都受支持
- 此语法不支持环境变量。
3.18 使用
1.3.18 排序
如果您有多个配置源,请从最不重要到最重要的顺序将它们添加到生成器中。例如,如果您有一个希望能够通过系统属性覆盖的配置文件,您将首先添加配置文件源,然后是系统属性源。同样,如果您有希望能够通过环境变量覆盖的默认设置,您将首先添加默认设置源(可能通过 props
),然后是环境变量源。
2.3.18 错误处理
如 ConfigDataBuilder 文档 中所示,onError
可用于在从配置源加载数据时遇到错误时自定义行为。最常见的是,这用于通过忽略加载异常来使配置源成为可选的。
3.3.18 对象映射器
Ratpack 使用 Jackson 进行配置对象绑定。使用的默认 ObjectMapper
配置了预先加载的常用 Jackson 模块,并设置为允许不带引号的字段名称、允许单引号以及忽略未知字段名称。这旨在使其易于使用,开箱即用。但是,有时您可能希望更改 Jackson 配置设置或添加额外的 Jackson 模块。如果是这样,可以通过 ConfigData.of(...)
的各种签名或通过 ConfigDataBuilder.configureObjectMapper(...)
来完成此操作。
4.3.18 绑定
构建好 ConfigData
实例后,您可以将数据绑定到配置对象。最简单的选项是定义一个类来表示应用程序配置的全部内容,并使用 ConfigData.get(Class)
一次性绑定到它。或者,您可以使用 ConfigData.get(String, Class)
在数据中的指定路径处一次绑定一个对象。对于绑定到 ServerConfig
对象的常见情况,提供了 ConfigData.getServerConfig(...)
签名以方便起见。