2-3.常用计量单位绑定
约 460 字大约 2 分钟
2025-06-24
在之前的配置中,我们提到了超时时间 timeout
的设置,例如:
servers:
ip-address: 192.168.0.1
port: 2345
timeout: -1
其中 timeout
描述了服务器操作的超时时间,当前值为 -1 表示永不超时。然而,对于超时时间单位的理解可能存在偏差,例如,配置超时时间为 240,这个 240 究竟是秒还是分钟?如果是在线服务器主从备份,4 分钟的超时时间可能不足以完成压缩和拷贝过程。为了解决这种潜在的误解,Spring Boot 充分利用了 JDK 8 中提供的全新的计量单位数据类型。
具体来说,我们可以在配置类中使用 Duration
和 DataSize
这两个 JDK 8 新增的类,并结合 @DurationUnit
和 @DataSizeUnit
注解来明确指定时间单位和数据大小单位,从而从根本上解决信息不对称的问题。例如:
@Component
@Data
@ConfigurationProperties(prefix = "servers")
public class ServerConfig {
@DurationUnit(ChronoUnit.HOURS)
private Duration serverTimeOut;
@DataSizeUnit(DataUnit.MEGABYTES)
private DataSize dataSize;
}
- Duration:表示时间间隔,可以通过
@DurationUnit
注解描述时间单位,例如上述代码中描述的单位为小时 (ChronoUnit.HOURS
)。 - DataSize:表示存储空间,可以通过
@DataSizeUnit
注解描述存储空间单位,例如上述代码中描述的单位为 MB (DataUnit.MEGABYTES
)。
使用上述两个单位可以有效避免因沟通不同步或文档不健全导致的信息不对称问题,从根本上解决了问题,避免产生误读。
通过使用 Duration
和 DataSize
,我们可以确保配置的含义清晰明确,避免因单位不明确而导致的问题。这在涉及服务器操作超时时间、数据大小限制等配置时尤为重要。