SpringBoot--yml配置文件的时间/大小的单位转换

原文网址:SpringBoot--yml配置文件的时间/大小的单位转换_IT利刃出鞘的博客-****博客

简介

说明

本文介绍SpringBoot的yml(properties)配置文件的时间/大小的单位转换。

概述

SpringBoot可以将yml中的配置绑定到一个Java类的字段,而且支持单位的转换。以时间为例,yml中指定为2m,则可以用Duration来接收这个字段,接收到的字段值为3分钟。

注意

本处的单位转换支持配置放到一个类中,也支持@Value等。

时间的转换

概述

Spring 使用 java.time.Duration 类代表时间大小,以下场景适用:

  1. 除非指定 @DurationUnit ,否则一个 long 代表的时间为毫秒。
  2. ISO-8601 标准格式( java.time.Duration 的实现就是参照此标准)
  3. 你也可以使用以下支持的单位(用大写也可以):
    1. ns - 纳秒
    2. us - 微秒
    3. ms - 毫秒
    4. s - 秒
    5. m - 分
    6. h - 时
    7. 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配置文件的时间/大小的单位转换 - 自学精灵

上一篇:CSS元素显示样式-2.行内元素


下一篇:Mybatis的基本使用-一、查询