最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Springboot中LocalDateTime對(duì)象返回給前端格式化解決方案

 更新時(shí)間:2024年04月24日 11:47:17   作者:奔跑鹵蛋  
在項(xiàng)目開發(fā)當(dāng)中前后端使用什么樣的時(shí)間格式,是一個(gè)值得關(guān)注的問題,這篇文章主要給大家介紹了關(guān)于Springboot中LocalDateTime對(duì)象返回給前端格式化的解決方案,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下

1.需求

后端日期時(shí)間對(duì)象,是LocalDateTime類型,直接返回前端,是數(shù)組形式

希望以正常的日期時(shí)間字符串格式返回

2.思路

1.@JsonFormat注解

2.消息轉(zhuǎn)化器

3.解決方案

3.1 使用注解(不推薦)

在實(shí)體類的LocalDateTime屬性上面,添加注解

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

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

缺點(diǎn): 每個(gè)日期時(shí)間屬性都要添加,麻煩

3.2 擴(kuò)展SpringMVC框架的消息轉(zhuǎn)化器,實(shí)現(xiàn)返回日期時(shí)間的格式化(推薦)

3.2.1 配置類: config.WebMvcConfiguration

該config已實(shí)現(xiàn)了登錄攔截器,和knife4j生成接口文檔、靜態(tài)資源映射(已從代碼中刪除),

現(xiàn)添加時(shí)間按格式轉(zhuǎn)換功能extendMessageConverters

/**
 * 配置類,注冊(cè)web層相關(guān)組件
 */
@Configuration
@Slf4j
public class WebMvcConfiguration extends WebMvcConfigurationSupport {
    //擴(kuò)展SpringMVC框架的消息轉(zhuǎn)化器,例如實(shí)現(xiàn)返回日期時(shí)間的格式化
    @Override
    protected void extendMessageConverters(List<HttpMessageConverter<?>> converters) {
        log.info("擴(kuò)展消息轉(zhuǎn)換器");
        MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();

        //將java對(duì)象序列化為json數(shù)據(jù),為消息轉(zhuǎn)換器設(shè)置序列轉(zhuǎn)換器
        converter.setObjectMapper(new JacksonObjectMapper());

        //將自己的消息轉(zhuǎn)換器加入容器中
        converters.add(0, converter);
    }
}

思路:參數(shù)獲取到當(dāng)前的消息轉(zhuǎn)換器列表converters,將我們自定義的消息轉(zhuǎn)化器convert添加到converters中,而且要添加到首位,讓它優(yōu)先生效

3.2.2 JacksonObjectMapper類的定義

顯然是個(gè)工具類,位于sky-common模塊的json.JacksonObjectMapper

import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.module.SimpleModule;
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateDeserializer;
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
import com.fasterxml.jackson.datatype.jsr310.deser.LocalTimeDeserializer;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateSerializer;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalTimeSerializer;

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;

import static com.fasterxml.jackson.databind.DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES;

/**
 * 對(duì)象映射器:基于jackson將Java對(duì)象轉(zhuǎn)為json,或者將json轉(zhuǎn)為Java對(duì)象
 * 將JSON解析為Java對(duì)象的過程稱為 [從JSON反序列化Java對(duì)象]
 * 從Java對(duì)象生成JSON的過程稱為 [序列化Java對(duì)象到JSON]
 */
public class JacksonObjectMapper extends ObjectMapper {

    public static final String DEFAULT_DATE_FORMAT = "yyyy-MM-dd";
    public static final String DEFAULT_DATE_TIME_FORMAT = "yyyy-MM-dd HH:mm:ss";
    public static final String DATE_TIME_FORMAT_NO_SECOND = "yyyy-MM-dd HH:mm";
    public static final String DEFAULT_TIME_FORMAT = "HH:mm:ss";

    public JacksonObjectMapper() {
        super();
        //收到未知屬性時(shí)不報(bào)異常
        this.configure(FAIL_ON_UNKNOWN_PROPERTIES, false);

        //反序列化時(shí),屬性不存在的兼容處理
        this.getDeserializationConfig().withoutFeatures(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);

        SimpleModule simpleModule = new SimpleModule()
                .addDeserializer(LocalDateTime.class, new LocalDateTimeDeserializer(DateTimeFormatter.ofPattern(DEFAULT_DATE_TIME_FORMAT)))
                .addDeserializer(LocalDate.class, new LocalDateDeserializer(DateTimeFormatter.ofPattern(DEFAULT_DATE_FORMAT)))
                .addDeserializer(LocalTime.class, new LocalTimeDeserializer(DateTimeFormatter.ofPattern(DEFAULT_TIME_FORMAT)))
                .addSerializer(LocalDateTime.class, new LocalDateTimeSerializer(DateTimeFormatter.ofPattern(DEFAULT_DATE_TIME_FORMAT)))
                .addSerializer(LocalDate.class, new LocalDateSerializer(DateTimeFormatter.ofPattern(DEFAULT_DATE_FORMAT)))
                .addSerializer(LocalTime.class, new LocalTimeSerializer(DateTimeFormatter.ofPattern(DEFAULT_TIME_FORMAT)));

        //注冊(cè)功能模塊 例如,可以添加自定義序列化器和反序列化器
        this.registerModule(simpleModule);
    }
}

簡(jiǎn)單分析: 先反序列化,再序列化

優(yōu)勢(shì): 一次配置,重復(fù)使用,不需要每個(gè)實(shí)體類的時(shí)間屬性上加注解了

3.2.3 效果

和使用注解是一樣的

總結(jié)

到此這篇關(guān)于Springboot中LocalDateTime對(duì)象返回給前端格式化解決方案的文章就介紹到這了,更多相關(guān)LocalDateTime對(duì)象返回前端格式化內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java 冒泡排序、快速排序?qū)嵗a

    Java 冒泡排序、快速排序?qū)嵗a

    這篇文章主要介紹了Java 冒泡排序、快速排序?qū)嵗a,需要的朋友可以參考下
    2017-05-05
  • java判斷中文字符串長(zhǎng)度的簡(jiǎn)單實(shí)例

    java判斷中文字符串長(zhǎng)度的簡(jiǎn)單實(shí)例

    下面小編就為大家?guī)?lái)一篇java判斷中文字符串長(zhǎng)度的簡(jiǎn)單實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧
    2017-01-01
  • Maven與Gradle的區(qū)別對(duì)比分析

    Maven與Gradle的區(qū)別對(duì)比分析

    這篇文章給大家給大家介紹了Maven與Gradle的區(qū)別對(duì)比分析,本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2026-05-05
  • Java可變參數(shù)列表詳解

    Java可變參數(shù)列表詳解

    這篇文章主要介紹了Java可變參數(shù)列表詳解的相關(guān)資料,需要的朋友可以參考下
    2017-05-05
  • 一起來(lái)了解Java的File類和IO流

    一起來(lái)了解Java的File類和IO流

    這篇文章主要為大家詳細(xì)介紹了Java?File類和IO流,在Java學(xué)習(xí)中,file類與io流是非常重要的部分,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2022-03-03
  • Java資源加載機(jī)制及使用最佳實(shí)踐

    Java資源加載機(jī)制及使用最佳實(shí)踐

    Java類加載器的資源加載機(jī)制,包括`getResource`、`getResources`、`findResource`、`findResources`等方法,本文給大家介紹Java資源加載機(jī)制及使用最佳實(shí)踐,感興趣的朋友跟隨小編一起看看吧
    2025-12-12
  • Springboot @Configuration與自動(dòng)配置詳解

    Springboot @Configuration與自動(dòng)配置詳解

    這篇文章主要介紹了SpringBoot中的@Configuration自動(dòng)配置,在進(jìn)行項(xiàng)目編寫前,我們還需要知道一個(gè)東西,就是SpringBoot對(duì)我們的SpringMVC還做了哪些配置,包括如何擴(kuò)展,如何定制,只有把這些都搞清楚了,我們?cè)谥笫褂貌艜?huì)更加得心應(yīng)手
    2022-07-07
  • 非常詳細(xì)的Java異常處理機(jī)制知識(shí)整理大全

    非常詳細(xì)的Java異常處理機(jī)制知識(shí)整理大全

    Java異常指在程序運(yùn)行時(shí)可能出現(xiàn)的一些錯(cuò)誤,比如試圖打開一個(gè)根本不存在的文件等,異常處理將會(huì)改變程序的控制流程,讓程序有機(jī)會(huì)對(duì)錯(cuò)誤做出處理,下面這篇文章主要給大家介紹了關(guān)于Java異常處理機(jī)制知識(shí)整理的相關(guān)資料,需要的朋友可以參考下
    2022-11-11
  • Java中spring boot validation自定義注解使用方式

    Java中spring boot validation自定義注解使用方式

    這篇文章主要介紹了Java中spring boot validation自定義注解使用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • Java深入分析Iterator迭代器與foreach循環(huán)的使用

    Java深入分析Iterator迭代器與foreach循環(huán)的使用

    這篇文章主要介紹了Java-Iterator迭代器與foreach循環(huán),主要包括Iterator迭代器接口的操作方法和foreach?循環(huán)語(yǔ)法解析,需要的朋友可以參考下
    2022-05-05

最新評(píng)論

安康市| 永丰县| 桐梓县| 诸城市| 军事| 准格尔旗| 彭山县| 贵南县| 灵寿县| 沽源县| 虞城县| 宣恩县| 湘潭县| 汤阴县| 巫溪县| 炎陵县| 喀喇沁旗| 香港 | 鸡泽县| 新平| 万源市| 淅川县| 驻马店市| 平顶山市| 清苑县| 博湖县| 安阳市| 抚远县| 延边| 沙洋县| 宣化县| 桂东县| 岳普湖县| 安仁县| 竹北市| 遵义县| 衡水市| 弋阳县| 米易县| 三原县| 彩票|