技术文摘
3 种 Springboot 全局时间格式化的方法,告别重复代码
在开发 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.properties 或 application.yml 文件中配置 spring.jackson.date-format 属性:
spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
这种方式可以全局设置时间的格式化格式。
通过以上三种方法,我们可以有效地实现 Spring Boot 全局时间格式化,减少重复代码,提高开发效率和代码的可维护性。在实际项目中,根据具体的需求和场景选择合适的方法,让时间处理变得更加简洁和规范。
TAGS: SpringBoot 开发技巧 时间格式化方法 告别重复代码
- CSS中多行文本省略对英文无效的原因
- Eclipse 里 JavaScript 自动提示缺失如何解决
- Ubuntu 下类似 HBuilder 的前端开发工具推荐
- Antd样式覆盖遇错::global语法有误,怎样正确覆盖Antd组件样式
- CSS 多行省略号不生效的原因及英文和中文内容省略问题的解决办法
- 组件内用 :global 修改 Ant Design 样式为何不生效
- Vue 组件为何在同一个 div 中仅加载一个
- HTML Meta标签常用类型,面试常问
- HTML常用的meta标签有哪些
- 在HTML页面中显示转义字符 的方法
- 为何我的两个 Vue 组件 和 无法同时加载
- Element Plus 里 aside 宽度超宽:尺寸由谁掌控?
- 父容器溢出滚动时子DIV横向排列的实现方法
- 弹性布局里子元素可收缩却宽度超容器的原因
- 点击表头删除表格相应列的方法