3 种 Springboot 全局时间格式化的方法,告别重复代码

2024-12-31 08:52:12   小编

在开发 Spring Boot 应用时,时间格式化是一个常见的需求。为了避免在每个需要处理时间的地方重复编写格式化代码,我们可以采用以下三种全局时间格式化的方法。

方法一:使用 @JsonFormat 注解

@JsonFormat 注解可以方便地对返回的 JSON 数据中的时间字段进行格式化。在实体类的时间字段上添加 @JsonFormat 注解,并指定相应的格式字符串,例如:

import com.fasterxml.jackson.annotation.JsonFormat;

import java.util.Date;

public class YourEntity {

    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createTime;

    // 其他字段和方法
}

这样,在将实体类转换为 JSON 数据时,时间字段会按照指定的格式进行输出。

方法二:自定义 HttpMessageConverter

通过自定义 HttpMessageConverter 可以实现更灵活的时间格式化。首先创建一个继承自 AbstractJackson2HttpMessageConverter 的类:

import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import org.springframework.http.MediaType;
import org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter;

import java.text.SimpleDateFormat;

public class CustomJsonHttpMessageConverter extends AbstractJackson2HttpMessageConverter {

    public CustomJsonHttpMessageConverter() {
        ObjectMapper objectMapper = new ObjectMapper();
        objectMapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
        objectMapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));
        super(objectMapper, MediaType.APPLICATION_JSON);
    }
}

然后在配置类中注册这个自定义的 HttpMessageConverter

import org.springframework.context.annotation.Configuration;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

import java.util.List;

@Configuration
public class WebMvcConfig implements WebMvcConfigurer {

    @Override
    public void extendMessageConverters(List<HttpMessageConverter<?>> converters) {
        converters.add(new CustomJsonHttpMessageConverter());
    }
}

方法三:配置 spring.jackson.date-format

application.propertiesapplication.yml 文件中配置 spring.jackson.date-format 属性:

spring.jackson.date-format=yyyy-MM-dd HH:mm:ss

这种方式可以全局设置时间的格式化格式。

通过以上三种方法,我们可以有效地实现 Spring Boot 全局时间格式化,减少重复代码,提高开发效率和代码的可维护性。在实际项目中,根据具体的需求和场景选择合适的方法,让时间处理变得更加简洁和规范。

TAGS: SpringBoot 开发技巧 时间格式化方法 告别重复代码

欢迎使用万千站长工具!

Welcome to www.zzTool.com