原文网址:SpringBoot--yml配置文件的时间/大小的单位转换_IT利刃出鞘的博客-****博客
简介
说明
本文介绍SpringBoot的yml(properties)配置文件的时间/大小的单位转换。
概述
SpringBoot可以将yml中的配置绑定到一个Java类的字段,而且支持单位的转换。以时间为例,yml中指定为2m,则可以用Duration来接收这个字段,接收到的字段值为3分钟。
注意
本处的单位转换支持配置放到一个类中,也支持@Value等。
时间的转换
概述
Spring 使用 java.time.Duration 类代表时间大小,以下场景适用:
- 除非指定 @DurationUnit ,否则一个 long 代表的时间为毫秒。
- ISO-8601 标准格式( java.time.Duration 的实现就是参照此标准)
- 你也可以使用以下支持的单位(用大写也可以):
- ns - 纳秒
- us - 微秒
- ms - 毫秒
- s - 秒
- m - 分
- h - 时
- d - 天
示例
application.yml
custom:
monitor:
name: myMonitor
interval: 3m
实体类
package com.knife.config;
import lombok.Data;
import java.time.Duration;
@Data
public class MonitorProperty {
private String name;
private Duration interval;
}
配置类
package com.knife.config;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class MonitorConfig {
@ConfigurationProperties(prefix = "custom.monitor")
@Bean
public MonitorProperty monitorProperty() {
return new MonitorProperty();
}
}
测试类
package com.knife.controller;
import com.knife.config.MonitorProperty;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloController {
@Autowired
private MonitorProperty monitorProperty;
@GetMapping("/test")
public String test() {
return "test success";
}
}
测试
打个断点,然后请求:
工具类实例
SpringBoot的转换时间的工具类是:DurationStyle(org.springframework.core.convert.support包)。
示例:
import org.springframework.core.convert.support.DurationStyle;
import java.time.Duration;
public class MyApp {
public static void main(String[] args) {
String durationString = "3m";
Duration duration = DurationStyle.SIMPLE.parse(durationString);
System.out.println(duration); // 输出 PT3M (3 minutes)
}
}
大小的转换
上边是文章部分内容,为便于维护,全文已转移到此网址:SpringBoot-yml配置文件的时间/大小的单位转换 - 自学精灵