在 application.properties 文件中以数组形式书写
YAML 本身支持 list 类型,所以可以在 application.yml 文件中添加:
set 集合也是这种方式的配置方式,不再重复书写。另外YAML 是更好的阅读方式,层次分明,所以在实际应用中更推荐大家使用该种方式做数据配置
DurationSpring Boot 内置支持从配置参数中解析 durations (持续时间), 给出了明确的说明
我们既可以配置毫秒数数值,也可配置带有单位的文本:
官网上已明确说明,配置 duration 不写单位,默认按照毫秒来指定,我们也可已通过 @DurationUnit 来指定单位:
常用单位如下:
ns for nanoseconds (纳秒)
us for microseconds (微秒)
ms for milliseconds (毫秒)
s for seconds (秒)
m for minutes (分)
h for hours (时)
d for days (天)
DataSize与 Duration 的用法一毛一样,默认单位是 byte (字节),可以通过 @DataSizeUnit 单位指定:
添加配置
但是,我测试的时候打印出来结果都是以 B (bytes) 来显示
常见单位如下:
B for bytes
KB for kilobytes
MB for megabytes
GB for gigabytes
TB for terabytes
自定义类型有些情况,我们想解析配置参数到我们自定义的对象类型上,假设,我们我们设置最大包裹重量:
在 MailModuleProperties 中添加 Weight 属性
我们可以模仿 DataSize 和 Duration 创造自己的 converter (转换器)
将其注册到 Spring Boot 上下文中
@ConfigurationPropertiesBinding 注解是让 Spring Boot 知道使用该转换器做数据绑定
使用 Spring Boot Configuration Processor 完成自动补全我们向项目中添加依赖:
Maven Gradle重新 build 项目之后,configuration processor 会为我们创建一个 JSON 文件:
这样,当我们在 application.properties 和 application.yml 中写配置的时候会有自动提醒: