SpringBoot 配置文件如何转换 Duration 的?

本文介绍了SpringBoot中Duration类型的配置项,用于设置如session超时时间等。Duration类型的值遵循特定的日期时间格式,如PT15M代表15分钟。SpringBoot在解析时提供了简化规则,例如PT15M可以写作15m,并默认转换为毫秒。自定义properties文件可通过@DurationUnit注解指定默认单位。了解这些规则能帮助避免配置错误,提高开发效率。

Spring Boot 的配置文件经常会出现 Duration 类型的配置项,比如设置 session 的超时时间。

Duration

我们知道 Duration 自己是根据正则进行日期处理的,具体规则如下:

Examples:
    "PT20.345S" -- parses as "20.345 seconds"
    "PT15M"     -- parses as "15 minutes" (where a minute is 60 seconds)
    "PT10H"     -- parses as "10 hours" (where an hour is 3600 seconds)
    "P2D"       -- parses as "2 days" (where a day is 24 hours or 86400 seconds)
    "P2DT3H4M"  -- parses as "2 days, 3 hours and 4 minutes"
    "P-6H3M"    -- parses as "-6 hours and +3 minutes"
    "-P6H3M"    -- parses as "-6 hours and -3 minutes"
    "-P-6H+3M"  -- parses as "+6 hours and -3 minutes"
复制代码

可见表示规则稍显复杂,容易出错,因此 SpringBoot 在解析 Duration 类型时进行了转换。

SpringBoot 对于 Duration 的转换

在 Spring Boot 中配置 Duration 类型,可以使用如下规则:

  • ns for nanoseconds
  • us for microseconds
  • ms for milliseconds
  • s for seconds
  • m for minutes
  • h for hours
  • d for days

比如:PT15M 相当于 15m,配置起来会比较简单,如果不加后缀,只写数字,则 Spring Boot 默认会将其转换为毫秒。

如果是自定义 properties 文件,也可以选择使用 @DurationUnit 注解进行标识默认单位,如:

	@DurationUnit(ChronoUnit.SECONDS)
	private Duration timeout = Duration.ofMinutes(30);
复制代码

参考资料:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值