Spring Boot对表示持续时间有专门的支持。如果您公开java.time.Duration属性,则应用程序对应Duration类型的属性有以下格式可用:
- long类型的常规表示(使用毫秒作为默认单位,除非指定了@DurationUnit)
- java.time.Duration 使用的标准ISO-8601格式
- 其中值和单位是耦合的,一种更可读的格式(例如:10s表示10秒)
什么意思呢,举例:
@ConfigurationProperties(prefix = "spring.converting.durations")
public class DurationsProperties {
/**
* 使用了@DurationUnit注解,单位(秒)
*/
@DurationUnit(ChronoUnit.SECONDS)
private Duration unitDuration;
/**
* 默认毫秒
*/
private Duration millisecond;
/**
* 值和单位是耦合的
*/
private Duration formatDuration;
// ... get/set方法
}
spring:
converting:
durations:
millisecond: 5000
unitDuration: 50
formatDuration: 1h
如上代码所示,假设应用已启动,并成功给对象DurationsProperties 属性匹配好了值,那么unitDuration的值就代表50秒,millisecond的值就代表5000毫秒(5秒),formatDuration的值代表1小时(3600秒),从下面的截图也可看出,Duration默认单位是毫秒。
持续时间单位有:
单位 | 表示 |
---|---|
ns | 纳秒 |
us | 微秒 |
ms | 毫秒 |
s | 秒 |
m | 分钟 |
h | 小时 |
d | 天 |
具体更多内容可参考官网地址:https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#features.external-config.typesafe-configuration-properties.conversion.durations。