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

首先 我在配置文件 application.yml 中 配置了一个textdata
里面声明了一个time 用来记录服务器超时时间
在这里插入图片描述
然后 我们在属性类中 读取这个属性
这里 我们声明 读取配置文件中的 textdata属性 来填充我们的 textData类中的两个属性 并声明get set函数
然后重写了 toString 函数 方便大家打印观察
在这里插入图片描述
最后 我们条件装配 并输出这个类
在这里插入图片描述
但是呢 这个时间单位 存在一定争议

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 配置文件上加上它的配置
在这里插入图片描述
又是一个3 那就还是同一个问题 是 3 秒 还是 3分钟 还是3小时呢?
别急 我们先运行看看
在这里插入图片描述
serverTimeOut的格式发生了一些变化
PT 这是它的标准单位
最后的 s 代表秒
0.003
千分之三
这里 计算过来 就是 3毫秒

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

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

我们在声明变量的上面 写上 @DurationUnit(ChronoUnit.) 提示中就会出现各种时间单位
在这里插入图片描述
这里 我们来个小时 HOURS
在这里插入图片描述
我们再次运行 他就变成了 一个 3H的单位
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值