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

東八區(qū)springboot如何配置序列化

 更新時間:2023年04月10日 10:01:43   作者:洪宏鴻  
本文主要介紹了東八區(qū)springboot如何配置序列化,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

使用SpringBoot默認(rèn)配置

SpringBoot默認(rèn)使用UTC時間,如果我們需要使用東八區(qū)時間,可以使用以下配置:

spring:
  jackson:
    time-zone: GMT+8

這種方式是最簡單的方式,不需要任何額外的依賴和代碼,但是需要注意的是,該配置是全局生效的,可能會影響到其他需要使用UTC時間的地方,而且每次新增依賴、升級SpringBoot版本等情況都需要再次檢查該配置是否正確。

自定義配置類

另外一種方式是自定義配置類,使用@Configuration注解創(chuàng)建一個配置類,然后在該類中配置Jackson2ObjectMapperBuilderCustomizer,指定時區(qū)為東八區(qū)。

@Configuration
public class JacksonConfiguration {

? ? @Bean
? ? public Jackson2ObjectMapperBuilderCustomizer jackson2ObjectMapperBuilderCustomizer() {
? ? ? ? return builder -> builder.timeZone(TimeZone.getTimeZone("GMT+8"));
? ? }
}

這種方式需要自定義代碼,但是可以更加靈活地控制使用東八區(qū)時間的范圍,而且不會影響到其他需要使用UTC時間的地方。但是同樣需要注意每次新增依賴、升級SpringBoot版本等情況都需要再次檢查該配置是否正確。

自定義 ObjectMapper

也可以通過自定義 Jackson 的 ObjectMapper 來使用東八區(qū)時間。

具體實現(xiàn)方式是,在 ObjectMapper 上設(shè)置一個自定義的 JavaTimeModule,然后在該模塊上設(shè)置時區(qū)為東八區(qū)。

示例代碼如下:

import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;

public class CustomObjectMapper extends ObjectMapper {
? ? public CustomObjectMapper() {
? ? ? ? JavaTimeModule javaTimeModule = new JavaTimeModule();
? ? ? ? javaTimeModule.addSerializer(LocalDateTime.class, new LocalDateTimeSerializer(DateTimeFormatter.ISO_LOCAL_DATE_TIME));
? ? ? ? javaTimeModule.addDeserializer(LocalDateTime.class, new LocalDateTimeDeserializer(DateTimeFormatter.ISO_LOCAL_DATE_TIME));
? ? ? ? this.registerModule(javaTimeModule);
? ? ? ? this.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));
? ? }
}

在上面的示例中,我們創(chuàng)建了一個繼承自 ObjectMapper 的 CustomObjectMapper,并在該對象上注冊了一個自定義的 JavaTimeModule,該模塊的序列化和反序列化方式分別使用了 LocalDateTimeSerializer 和 LocalDateTimeDeserializer,同時將時區(qū)設(shè)置為 Asia/Shanghai。你也可以根據(jù)需要添加其他的時間序列化和反序列化方式。

在代碼中使用自定義的 CustomObjectMapper 對象進(jìn)行序列化和反序列化即可使用東八區(qū)時間。例如:

CustomObjectMapper objectMapper = new CustomObjectMapper();
String jsonString = objectMapper.writeValueAsString(yourObject);
YourObject deserializedObject = objectMapper.readValue(jsonString, YourObject.class);

值得注意的是,如果你需要在 Spring Boot 中使用自定義的 ObjectMapper,則需要在配置類中進(jìn)行相關(guān)配置:

@Configuration
public class JacksonConfig {

? ? @Bean
? ? public ObjectMapper objectMapper() {
? ? ? ? return new CustomObjectMapper();
? ? }
}

這樣配置之后,在代碼中使用 @Autowired 注入該 ObjectMapper 對象即可

自定義序列化器

第三種方式是自定義序列化器,在序列化的過程中將時間轉(zhuǎn)換為東八區(qū)時間。需要實現(xiàn)JsonSerializer接口,然后在@JsonSerialize注解中指定該序列化器。具體代碼如下:

public class ChinaZoneDateTimeSerializer extends JsonSerializer<ZonedDateTime> {

? ? @Override
? ? public void serialize(ZonedDateTime value, JsonGenerator gen, SerializerProvider serializers) throws IOException {
? ? ? ? gen.writeString(value.withZoneSameInstant(ZoneId.of("GMT+8")).format(DateTimeFormatter.ISO_OFFSET_DATE_TIME));
? ? }
}

然后在需要序列化的對象的時間字段上使用@JsonSerialize注解,指定該序列化器。

@JsonSerialize(using = ChinaZoneDateTimeSerializer.class)
private ZonedDateTime createTime;

這種方式可以更加靈活地控制時間的格式和轉(zhuǎn)換邏輯,但是需要自定義代碼,而且對每個需要轉(zhuǎn)換的時間字段都需要添加@JsonSerialize注解,有一定的代碼侵入性。

總結(jié)

對于使用東八區(qū)時間的配置,不同的方式各有優(yōu)劣,具體如下:

在代碼中手動指定時區(qū)

優(yōu)點:簡單明了,沒有額外的依賴

缺點:每次使用時都需要手動指定時區(qū),不便于維護(hù)和修改。

在 Spring Boot 的 application.properties/yaml 中配置

優(yōu)點:配置簡單,在代碼中直接使用自動裝配的組件即可

缺點:如果有多個模塊需要使用不同的時區(qū),需要在不同的模塊中分別進(jìn)行配置

自定義 Jackson 的 ObjectMapper

優(yōu)點:在多個模塊中都可以使用同一種方式來進(jìn)行配置,方便維護(hù)和修改

缺點:需要額外的依賴,并且需要對 Jackson 的序列化和反序列化機(jī)制有一定的了解。

綜上所述,三種方式各有優(yōu)缺點,需要根據(jù)實際需求和情況選擇合適的方式。若是只需要使用全局東八區(qū)時間,可以選擇使用SpringBoot默認(rèn)配置;若是需要更加靈活地控制使用東八區(qū)時間的范圍,可以選擇自定義配置類;若是需要更加靈活地控制時間的格式和轉(zhuǎn)換邏輯,可以選擇自定義序列化器。

到此這篇關(guān)于東八區(qū)springboot如何配置序列化的文章就介紹到這了,更多相關(guān)springboot配置序列化內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • java線性表的存儲結(jié)構(gòu)及其代碼實現(xiàn)

    java線性表的存儲結(jié)構(gòu)及其代碼實現(xiàn)

    這篇文章主要為大家詳細(xì)介紹了Java數(shù)據(jù)結(jié)構(gòu)學(xué)習(xí)筆記第一篇,線性表的存儲結(jié)構(gòu)及其代碼實現(xiàn),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-09-09
  • java中的多態(tài)和繼承示例分析

    java中的多態(tài)和繼承示例分析

    這篇文章主要介紹了java中的多態(tài)和繼承,結(jié)合實例形式分析了java中的多態(tài)和繼承原理、實現(xiàn)方法及相關(guān)操作注意事項,需要的朋友可以參考下
    2020-05-05
  • 解決RestTemplate加@Autowired注入不了的問題

    解決RestTemplate加@Autowired注入不了的問題

    這篇文章主要介紹了解決RestTemplate加@Autowired注入不了的問題,具有很好的參考價值,希望對大家有所幫助。
    2021-08-08
  • Java調(diào)用基于Ollama本地大模型的實現(xiàn)

    Java調(diào)用基于Ollama本地大模型的實現(xiàn)

    本文主要介紹了Java調(diào)用基于Ollama本地大模型的實現(xiàn),實現(xiàn)文本生成、問答、文本分類等功能,開發(fā)者可以輕松配置和調(diào)用模型,具有一定的參考價值,感興趣的可以了解一下
    2025-03-03
  • 基于Spring + Spring MVC + Mybatis 高性能web構(gòu)建實例詳解

    基于Spring + Spring MVC + Mybatis 高性能web構(gòu)建實例詳解

    這篇文章主要介紹了基于Spring + Spring MVC + Mybatis 高性能web構(gòu)建實例詳解,需要的朋友可以參考下
    2017-04-04
  • 使用@EnableWebMvc輕松配置Spring MVC

    使用@EnableWebMvc輕松配置Spring MVC

    這篇文章主要為大家介紹了使用@EnableWebMvc輕松配置Spring MVC實現(xiàn)示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-10-10
  • 23種設(shè)計模式(16)java訪問者模式

    23種設(shè)計模式(16)java訪問者模式

    這篇文章主要為大家詳細(xì)介紹了23種設(shè)計模式之java訪問者模式,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • 基于BIO的Java Socket通信詳解

    基于BIO的Java Socket通信詳解

    這篇文章主要為大家詳細(xì)介紹了基于BIO的Java Socket通信相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-12-12
  • Java架構(gòu)設(shè)計之六步拆解 DDD

    Java架構(gòu)設(shè)計之六步拆解 DDD

    DDD(Domain-Driven Design 領(lǐng)域驅(qū)動設(shè)計)是由Eric Evans最先提出,目的是對軟件所涉及到的領(lǐng)域進(jìn)行建模,以應(yīng)對系統(tǒng)規(guī)模過大時引起的軟件復(fù)雜性的問題
    2022-02-02
  • Java編程訪問權(quán)限的控制代碼詳解

    Java編程訪問權(quán)限的控制代碼詳解

    這篇文章主要介紹了Java編程訪問權(quán)限的控制代碼詳解,涉及包名,公共的和私有的等相關(guān)內(nèi)容,分享了相關(guān)代碼示例,小編覺得還是挺不錯的,具有一定借鑒價值,需要的朋友可以參考下
    2018-01-01

最新評論

张北县| 泰安市| 高唐县| 揭西县| 郑州市| 宣威市| 尼木县| 宜阳县| 密山市| 日照市| 泰州市| 英德市| 个旧市| 赤水市| 武穴市| 界首市| 阿拉善右旗| 山东省| 上杭县| 天长市| 凌源市| 瑞丽市| 六安市| 贵南县| 开江县| 宁都县| 吐鲁番市| 广河县| 萨迦县| 拉萨市| 建德市| 奉贤区| 道孚县| 平度市| 噶尔县| 大庆市| 广安市| 紫云| 临清市| 惠水县| 广西|