欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Springboot中設(shè)置時(shí)間格式問題小結(jié)

 更新時(shí)間:2025年04月24日 09:31:37   作者:SYKMI  
本文主要介紹了Springboot中設(shè)置時(shí)間格式問題小結(jié),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

1-設(shè)置全局時(shí)間格式

1.Date類型的時(shí)間

對于老項(xiàng)目來說,springboot中許多類使用的是Date類型的時(shí)間,沒有用到LocalDateTime等JDK8時(shí)間類,那么直接在配置文件中設(shè)置json序列化時(shí)間格式即可

  # 配置文件中配置
  jackson:
    date-format: yyyy-MM-dd HH:mm:ss
    time-zone: GMT+8

2.JDK8時(shí)間

如果項(xiàng)目中的時(shí)間采用的是LocalDateTime、LocalDate、LocalTime等JDK8時(shí)間類,Jackson默認(rèn)情況下不支持這些時(shí)間類的序列化,那么我們需要顯式的配置它。

// 方案1
@Configuration
public class JacksonConfig {

    @Bean
    public Jackson2ObjectMapperBuilder jackson2ObjectMapperBuilder() {
        Jackson2ObjectMapperBuilder builder = new Jackson2ObjectMapperBuilder();

        // 注冊 JavaTimeModule 以支持 JDK 8 時(shí)間類
        JavaTimeModule javaTimeModule = new JavaTimeModule();

        // 配置日期時(shí)間格式
        DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");

        // 自定義 LocalDateTime 序列化器和反序列化器
        javaTimeModule.addSerializer(LocalDateTime.class, new LocalDateTimeSerializer(dateTimeFormatter));
        javaTimeModule.addDeserializer(LocalDateTime.class, new LocalDateTimeDeserializer(dateTimeFormatter));

        // 自定義 LocalDate 序列化器和反序列化器(如果需要)
        javaTimeModule.addSerializer(LocalDate.class, new LocalDateSerializer(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
        javaTimeModule.addDeserializer(LocalDate.class, new LocalDateDeserializer(DateTimeFormatter.ofPattern("yyyy-MM-dd")));

        // 自定義 LocalTime 序列化器和反序列化器(如果需要)
        javaTimeModule.addSerializer(LocalTime.class, new LocalTimeSerializer(DateTimeFormatter.ofPattern("HH:mm:ss")));
        javaTimeModule.addDeserializer(LocalTime.class, new LocalTimeDeserializer(DateTimeFormatter.ofPattern("HH:mm:ss")));

        builder.modules(javaTimeModule);

        // 其他全局配置
        builder.featuresToDisable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS); // 禁用時(shí)間戳格式

        return builder;
    }
}
// 方案2
@Configuration
public class JacksonConfig {

    @Bean
    public ObjectMapper objectMapper() {
        ObjectMapper objectMapper = new ObjectMapper();

        // 注冊 JavaTimeModule 以支持 JDK 8 時(shí)間類
        JavaTimeModule javaTimeModule = new JavaTimeModule();

        // 配置日期時(shí)間格式
        DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");

        // 自定義 LocalDateTime 序列化器和反序列化器
        javaTimeModule.addSerializer(LocalDateTime.class, new LocalDateTimeSerializer(dateTimeFormatter));
        javaTimeModule.addDeserializer(LocalDateTime.class, new LocalDateTimeDeserializer(dateTimeFormatter));

        // 自定義 LocalDate 序列化器和反序列化器(如果需要)
        javaTimeModule.addSerializer(LocalDate.class, new LocalDateSerializer(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
        javaTimeModule.addDeserializer(LocalDate.class, new LocalDateDeserializer(DateTimeFormatter.ofPattern("yyyy-MM-dd")));

        // 自定義 LocalTime 序列化器和反序列化器(如果需要)
        javaTimeModule.addSerializer(LocalTime.class, new LocalTimeSerializer(DateTimeFormatter.ofPattern("HH:mm:ss")));
        javaTimeModule.addDeserializer(LocalTime.class, new LocalTimeDeserializer(DateTimeFormatter.ofPattern("HH:mm:ss")));

        objectMapper.registerModule(javaTimeModule);

        // 其他全局配置
        objectMapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS); // 禁用時(shí)間戳格式

        return objectMapper;
    }
}

注意?。。‘?dāng)你顯式通過配置類進(jìn)行配置的時(shí)候,配置文件中對于Date類型的格式配置以及時(shí)區(qū)通通失效了,這是因?yàn)樽远x的配置會覆蓋Springboot的自動配置,當(dāng)檢測到你自定義配置時(shí),自動配置不會再生效

3.使Date類和JDK8時(shí)間類統(tǒng)統(tǒng)格式化時(shí)間

如果你的項(xiàng)目比較亂,這些類混合在用,那么你需要在顯式配置的時(shí)候捎帶上Date類如何序列化的規(guī)則,如下

@Configuration
public class JacksonConfig {

    @Bean
    public ObjectMapper objectMapper() {
        ObjectMapper objectMapper = new ObjectMapper();

        // 設(shè)置全局日期格式(影響 java.util.Date)
        objectMapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));

        // 注冊 JavaTimeModule 以支持 JDK 8 時(shí)間類
        JavaTimeModule javaTimeModule = new JavaTimeModule();

        // 配置日期時(shí)間格式
        DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");

        // 自定義 LocalDateTime 序列化器和反序列化器
        javaTimeModule.addSerializer(LocalDateTime.class, new LocalDateTimeSerializer(dateTimeFormatter));
        javaTimeModule.addDeserializer(LocalDateTime.class, new LocalDateTimeDeserializer(dateTimeFormatter));

        // 自定義 LocalDate 序列化器和反序列化器
        javaTimeModule.addSerializer(LocalDate.class, new LocalDateSerializer(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
        javaTimeModule.addDeserializer(LocalDate.class, new LocalDateDeserializer(DateTimeFormatter.ofPattern("yyyy-MM-dd")));

        // 自定義 LocalTime 序列化器和反序列化器
        javaTimeModule.addSerializer(LocalTime.class, new LocalTimeSerializer(DateTimeFormatter.ofPattern("HH:mm:ss")));
        javaTimeModule.addDeserializer(LocalTime.class, new LocalTimeDeserializer(DateTimeFormatter.ofPattern("HH:mm:ss")));

        objectMapper.registerModule(javaTimeModule);

        // 禁用時(shí)間戳格式(影響 java.util.Date 和 JDK 8 時(shí)間類)
        objectMapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);

        return objectMapper;
    }
}

以上這些配置根據(jù)項(xiàng)目情況選擇合適的序列化/反序列化方案,這些方案適用于json的入?yún)?出參的序列化規(guī)則,也就是說,當(dāng)你的入?yún)⑹莏son格式時(shí),對應(yīng)的時(shí)間只要適用于你規(guī)定的格式,那么jackson將會自動處理
當(dāng)你想自定義某個類中的時(shí)間屬性以特定格式返回的時(shí)候,你可以使用@JsonFormat注解,該注解優(yōu)先級大于項(xiàng)目全局時(shí)間格式

2-關(guān)于@DateTimeFormat注解

@DateTimeFormat 注解主要用于入?yún)r(shí)格式化日期參數(shù),尤其是在處理表單提交或 URL 請求參數(shù)時(shí)。它不會影響出參(即返回給客戶端的 JSON 或其他格式響應(yīng))的日期格式,該注解對Date類和JDK8時(shí)間類都生效

到此這篇關(guān)于Springboot中設(shè)置時(shí)間格式問題小結(jié)的文章就介紹到這了,更多相關(guān)Springboot設(shè)置時(shí)間格式內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • SpringBoot @Autowired注入為空的情況解讀

    SpringBoot @Autowired注入為空的情況解讀

    這篇文章主要介紹了SpringBoot @Autowired注入為空的情況解讀,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • 淺談JVM之使用JFR解決內(nèi)存泄露

    淺談JVM之使用JFR解決內(nèi)存泄露

    內(nèi)存泄露的主要原因就是java中的對象生命周期有長有短。如果長生命周期的對象引用了短生命周期的對象,就有可能造成事實(shí)上的內(nèi)存泄露。本文將介紹JVM之使用JFR解決內(nèi)存泄露。
    2021-06-06
  • Java Socket通信之聊天室功能

    Java Socket通信之聊天室功能

    這篇文章主要為大家詳細(xì)介紹了Java Socket通信之聊天室功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-12-12
  • 圖文示例詳解Lucene數(shù)據(jù)模型查詢原理

    圖文示例詳解Lucene數(shù)據(jù)模型查詢原理

    這篇文章主要為大家通過圖文示例詳解Lucene數(shù)據(jù)模型查詢原理,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-05-05
  • SpringBoot如何通過devtools實(shí)現(xiàn)熱部署

    SpringBoot如何通過devtools實(shí)現(xiàn)熱部署

    這篇文章主要介紹了SpringBoot如何通過devtools實(shí)現(xiàn)熱部署,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-11-11
  • SpringBoot Security整合JWT授權(quán)RestAPI的實(shí)現(xiàn)

    SpringBoot Security整合JWT授權(quán)RestAPI的實(shí)現(xiàn)

    這篇文章主要介紹了SpringBoot Security整合JWT授權(quán)RestAPI的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11
  • Java中Spring的Security使用詳解

    Java中Spring的Security使用詳解

    這篇文章主要介紹了Java中Spring的Security使用詳解,在web應(yīng)用開發(fā)中,安全無疑是十分重要的,選擇Spring Security來保護(hù)web應(yīng)用是一個非常好的選擇,需要的朋友可以參考下
    2023-07-07
  • SpringBoot3和ShardingSphere5框架實(shí)現(xiàn)數(shù)據(jù)分庫分表

    SpringBoot3和ShardingSphere5框架實(shí)現(xiàn)數(shù)據(jù)分庫分表

    這篇文章主要介紹了SpringBoot3和ShardingSphere5框架實(shí)現(xiàn)數(shù)據(jù)分庫分表的相關(guān)資料,需要的朋友可以參考下
    2023-08-08
  • 解決Long類型后端到前端精度丟失問題

    解決Long類型后端到前端精度丟失問題

    文章討論了后端Long類型數(shù)據(jù)通過JSON傳遞到前端時(shí)可能出現(xiàn)的精度丟失問題,原因在于JavaScript的Number類型精度限制,提出了兩種解決方案:將Long類型序列化為String類型,或者配置全局的ObjectMapper使用ToStringSerializer,通過自定義JacksonConfig類
    2025-01-01
  • PowerJob的WorkerHealthReporter工作流程源碼解讀

    PowerJob的WorkerHealthReporter工作流程源碼解讀

    這篇文章主要為大家介紹了PowerJob的WorkerHealthReporter工作流程源碼解讀,
    2023-12-12

最新評論