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

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

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

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

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

對(duì)于老項(xiàng)目來(lái)說(shuō),springboot中許多類使用的是Date類型的時(shí)間,沒(méi)有用到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();

        // 注冊(cè) 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();

        // 注冊(cè) 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)你顯式通過(guò)配置類進(jìn)行配置的時(shí)候,配置文件中對(duì)于Date類型的格式配置以及時(shí)區(qū)通通失效了,這是因?yàn)樽远x的配置會(huì)覆蓋Springboot的自動(dòng)配置,當(dāng)檢測(cè)到你自定義配置時(shí),自動(dòng)配置不會(huì)再生效

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"));

        // 注冊(cè) 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ī)則,也就是說(shuō),當(dāng)你的入?yún)⑹莏son格式時(shí),對(duì)應(yīng)的時(shí)間只要適用于你規(guī)定的格式,那么jackson將會(huì)自動(dòng)處理
當(dāng)你想自定義某個(gè)類中的時(shí)間屬性以特定格式返回的時(shí)候,你可以使用@JsonFormat注解,該注解優(yōu)先級(jí)大于項(xiàng)目全局時(shí)間格式

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

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

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

相關(guān)文章

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

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

    這篇文章主要介紹了SpringBoot如何通過(guò)devtools實(shí)現(xiàn)熱部署,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(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),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11
  • Java中Spring的Security使用詳解

    Java中Spring的Security使用詳解

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

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

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

    解決Long類型后端到前端精度丟失問(wèn)題

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

    PowerJob的WorkerHealthReporter工作流程源碼解讀

    這篇文章主要為大家介紹了PowerJob的WorkerHealthReporter工作流程源碼解讀,
    2023-12-12
  • 最新評(píng)論