java Duration格式规范化 自定义时间单位类型

首先 我在配置文件 application.yml 中 配置了一个textdata
里面声明了一个time 用来记录服务器超时时间
java Duration格式规范化 自定义时间单位类型_第1张图片
然后 我们在属性类中 读取这个属性
这里 我们声明 读取配置文件中的 textdata属性 来填充我们的 textData类中的两个属性 并声明get set函数
然后重写了 toString 函数 方便大家打印观察
java Duration格式规范化 自定义时间单位类型_第2张图片
最后 我们条件装配 并输出这个类
java Duration格式规范化 自定义时间单位类型_第3张图片
但是呢 这个时间单位 存在一定争议

time -1 自然是没什么好说的 负一代表永不超时
但是 如果我们写个3 那么 可能就会有误会 是 3秒 还是 3分钟 又或者是 3小时?

这里 我们将代码改成这样

package com.example.webdom.domain;

import org.springframework.boot.context.properties.ConfigurationProperties;

import java.time.Duration;

@ConfigurationProperties("textdata")
public class textData {
    private long time;
    private String uniTs;
    private Duration serverTimeOut;

    public long getTime() {
        return time;
    }

    public String getUniTs() {
        return uniTs;
    }

    public Duration getServerTimeOut() {
        return serverTimeOut;
    }

    public void setTime(long time) {
        this.time = time;
    }

    public void setUniTs(String uniTs) {
        this.uniTs = uniTs;
    }

    public void setServerTimeOut(Duration serverTimeOut) {
        this.serverTimeOut = serverTimeOut;
    }

    @Override
    public String toString() {
        return "textData{" +
                "time=" + time +
                ", units='" + uniTs + '\'' +
                ", serverTimeOut='" + serverTimeOut + '\'' +
                '}';
    }
}

炸了 我声明了一个 Duration 类型的值 叫 serverTimeOut
定义了他的 get set函数 然后 在toString上加上了它的输出
然后在 application.yml 配置文件上加上它的配置
java Duration格式规范化 自定义时间单位类型_第4张图片
又是一个3 那就还是同一个问题 是 3 秒 还是 3分钟 还是3小时呢?
别急 我们先运行看看
java Duration格式规范化 自定义时间单位类型_第5张图片
serverTimeOut的格式发生了一些变化
PT 这是它的标准单位
最后的 s 代表秒
0.003
千分之三
这里 计算过来 就是 3毫秒

通常你用 long 描述时间 大部分做过的java工程师 也会按毫秒去读
但是这种就更强调了格式
避免了出现争议或误会

重要的是 我们可以自定义他的单位

我们在声明变量的上面 写上 @DurationUnit(ChronoUnit.) 提示中就会出现各种时间单位
java Duration格式规范化 自定义时间单位类型_第6张图片
这里 我们来个小时 HOURS
java Duration格式规范化 自定义时间单位类型_第7张图片
我们再次运行 他就变成了 一个 3H的单位
java Duration格式规范化 自定义时间单位类型_第8张图片

你可能感兴趣的:(java,开发语言)