24.7.3. 属性转换
将外部应用配置绑定到@ConfigurationProperties
beans时,Spring Boot会尝试将属性强制转换为正确的类型。如果需要自定义类型转换器,你可以提供一个ConversionService
bean(名为conversionService
的bean),或自定义属性编辑器(通过CustomEditorConfigurer
bean),或自定义Converters
(bean定义时需要注解@ConfigurationPropertiesBinding
)。
注 由于该bean在应用程序生命周期的早期就需要使用,所以确保限制你的ConversionService
使用的依赖。通常,在创建时期任何你需要的依赖可能都没完全初始化。如果强制配置关键字不需要它,而且只依赖满足@ConfigurationPropertiesBinding
的自定义的转换器,你可能想要重命名自定义的ConversionService
。
时间段转换
Spring Boot对表达时间段有专门的支持。 如果你暴露了java.time.Duration
属性,可用下列格式的应用属性:
常规的
long
表示(默认单位为毫秒,除非指定了@DefaultUnit
)java.util.Duration
使用的标准的ISO-8601格式组合了值与单位的更加易读的格式(比如
10s
表示10秒)
考虑下面的例子:
为了将会话超时指定为30秒,30
, PT30S
和 30s
都是等价的。将读取超时指定为500毫秒,可以用下列格式里的任何一种:500
, PT0.5S
与500ms
。
你也可以使用任何支持的单位:
ns用于纳秒
ms用于毫秒
s用于秒
m用于分
h用于小时
d应用日
默认单位是毫秒,可以使用@DefaultUnit
重写。
注 如果你正在升级之前的版本,之前的版本简单地使用Long
来表达时间段,如果切换到Duration
时不是毫秒,要确保定义了单位(使用@DefaultUnit
)。这样做的话,在支持更加丰富的格式的同时,升级也能更加透明。
最后更新于