日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

Springboot 全局日期格式化處理的實現

瀏覽:225日期:2023-05-16 09:19:36

最近部門幾位同事受了一些委屈相繼離職,共事三年臨別之際頗有不舍,待一切手續辦妥帖,寒暄過后送他們出公司,幾個老哥臨別時沖我鬼魅一笑,我頓時心里一緊有種不好的預感,這事絕對沒有這么簡單。等我接手這幾個大佬的項目后,應驗了我的預感,此刻我居然有點后悔,為啥送別之時沒揍他們一頓!哈哈哈~ 而這種打人的沖動,在我開始優化幾位老哥的項目時候,變得越來越強烈。

Springboot 全局日期格式化處理的實現

有個坑

技術部每個月都會組織一下代碼走查及優化,以前是各自審查優化自己的項目,如今幾位老哥的離職他們的項目就落到了我的頭上。對于程序員來說最痛苦的事情就是接手別人的項目,還要做優化改造,因為這一點也不比重構一遍項目簡單。不過,軍令在前,沒辦法硬著頭皮上吧!

第一個優化的點就讓我有點崩潰,這幾個大佬的技能能力很強,一直都是我學習的榜樣,但在項目里幾乎所有的日期格式化都這樣用 SimpleDateFormat ,像如下代碼這樣實現,emm~ ,受過傷的男人怎么啥事都做的出來,哈哈哈~

SvcOrderDailyStatisticsPo orderDailyStatisticsPo = new SvcOrderDailyStatisticsPo();SimpleDateFormat dateFormat = new SimpleDateFormat('yyyy-MM-dd');Date stationTime = dateFormat.parse(dateFormat.format(svcWorkOrderPo.getPayEndTime()));orderDailyStatisticsPo.setStatisticalDate(stationTime);

而且項目中的時間和日期API用的也比較混亂,考慮到 java.util.Date 和 java.util.Calendar 不支持時區,且非線程安全,對于日期的計算相對繁瑣,技術部一致要求用JDK1.8以后的 java.time LocalDateTime。但不少人還是在用 java.util.Date 和 java.util.Calendar 處理日期。

優化方案

時間格式化是使用頻率非常高的,如何讓時間格式化變得既簡單又不用重復造輪子,那么就應將它抽象出來,作為全局的日期格式化處理,下面就結合實踐簡單介紹下幾種優化方案。

測試地址:http://127.0.0.1:8080/timeTest

@GetMapping('/timeTest') public OrderInfo timeTest() { OrderInfo order = new OrderInfo(); order.setCreateTime(LocalDateTime.now()); order.setUpdateTime(new Date()); return order; }

1、@JsonFormat注解

使用@JsonFormat注解格式化時間,應該算是一個基本操作了,大部分開發者都應用此種方式,簡單方便。

/** * @Author: xiaofu * @Description: */public class OrderInfo { @JsonFormat(locale = 'zh', timezone = 'GMT+8', pattern = 'yyyy-MM-dd HH:mm:ss') private LocalDateTime createTime; @JsonFormat(locale = 'zh', timezone = 'GMT+8', pattern = 'yyyy-MM-dd HH:mm:ss') private Date updateTime; public LocalDateTime getCreateTime() { return createTime; } public void setCreateTime(LocalDateTime createTime) { this.createTime = createTime; } public Date getUpdateTime() { return updateTime; } public void setUpdateTime(Date updateTime) { this.updateTime = updateTime; }}

測試一下結果,發現 Date 類型和 LocalDateTime 類型都格式化成功,但還是有個問題,這樣做仍然比較繁瑣,每個實體類的日期字段都要加@JsonFormat注解,重復的工作量也不小。接著往下看~

Springboot 全局日期格式化處理的實現

2、全局配置 (1)

Springboot 已經為我們提供了日期格式化 ${spring.jackson.date-format:yyyy-MM-dd HH:mm:ss},這里我們需要進行全局配置,配置比較簡單,也無需在實體類屬性上添加@JsonFormat注解。

/** * @Author: xiaofu * @Description: */public class OrderInfo { //@JsonFormat(locale = 'zh', timezone = 'GMT+8', pattern = 'yyyy-MM-dd HH:mm:ss') private LocalDateTime createTime; //@JsonFormat(locale = 'zh', timezone = 'GMT+8', pattern = 'yyyy-MM-dd HH:mm:ss') private Date updateTime; public LocalDateTime getCreateTime() { return createTime; } public void setCreateTime(LocalDateTime createTime) { this.createTime = createTime; } public Date getUpdateTime() { return updateTime; } public void setUpdateTime(Date updateTime) { this.updateTime = updateTime; }}

只需要用@Configuration定義一個配置類,注入兩個Bean即可完成全局日期格式化處理,這種方式也是當前我項目中正在用的方式。

/** * @Author: xiaofu * @Description: */@Configurationpublic class LocalDateTimeSerializerConfig { @Value('${spring.jackson.date-format:yyyy-MM-dd HH:mm:ss}') private String pattern; @Bean public LocalDateTimeSerializer localDateTimeDeserializer() { return new LocalDateTimeSerializer(DateTimeFormatter.ofPattern(pattern)); } @Bean public Jackson2ObjectMapperBuilderCustomizer jackson2ObjectMapperBuilderCustomizer() { return builder -> builder.serializerByType(LocalDateTime.class, localDateTimeDeserializer()); }}

這種方式可支持 Date 類型和 LocalDateTime 類型并存,那么有一個問題就是現在全局時間格式是yyyy-MM-dd HH:mm:ss,但有的字段卻需要yyyy-MM-dd格式咋整?

那就需要配合@JsonFormat注解使用,在特定的字段屬性添加@JsonFormat注解即可,因為@JsonFormat注解優先級比較高,會以@JsonFormat注解標注的時間格式為主。

3、全局配置 (2)

這種全局配置的實現方式與上邊的效果是一樣的,不過,要注意的是使用這種配置后,字段手動配置@JsonFormat注解將不再生效。

/** * @Author: xiaofu * @Description: */public class OrderInfo { //@JsonFormat(locale = 'zh', timezone = 'GMT+8', pattern = 'yyyy-MM-dd HH:mm:ss') private LocalDateTime createTime; //@JsonFormat(locale = 'zh', timezone = 'GMT+8', pattern = 'yyyy-MM-dd HH:mm:ss') private Date updateTime; public LocalDateTime getCreateTime() { return createTime; } public void setCreateTime(LocalDateTime createTime) { this.createTime = createTime; } public Date getUpdateTime() { return updateTime; } public void setUpdateTime(Date updateTime) { this.updateTime = updateTime; }}

/** * @Author: xiaofu * @Description: */@Configurationpublic class LocalDateTimeSerializerConfig { @Value('${spring.jackson.date-format:yyyy-MM-dd HH:mm:ss}') private String pattern; @Bean @Primary public ObjectMapper serializingObjectMapper() { ObjectMapper objectMapper = new ObjectMapper(); JavaTimeModule javaTimeModule = new JavaTimeModule(); javaTimeModule.addSerializer(LocalDateTime.class, new LocalDateTimeSerializer()); javaTimeModule.addDeserializer(LocalDateTime.class, new LocalDateTimeDeserializer()); objectMapper.registerModule(javaTimeModule); return objectMapper; } public class LocalDateTimeSerializer extends JsonSerializer<LocalDateTime> { @Override public void serialize(LocalDateTime value, JsonGenerator gen, SerializerProvider serializers) throws IOException { gen.writeString(value.format(ofPattern(pattern))); } } public class LocalDateTimeDeserializer extends JsonDeserializer<LocalDateTime> { @Override public LocalDateTime deserialize(JsonParser p, DeserializationContext deserializationContext) throws IOException { return LocalDateTime.parse(p.getValueAsString(), ofPattern(pattern)); } }}

總結

分享了一個Springboot項目開發過程中的一個小技巧,也順便吐槽一下項目優化中遇到的坑,優化別的人的代碼雖然是一件比較痛苦的事情,但在這個過程中確實能學習到很多技巧,對個人的技能提升也是很有幫助,因為都是些能夠實實在在提高開發效率的干貨。

到此這篇關于Springboot 全局日期格式化處理的實現的文章就介紹到這了,更多相關Springboot 全局日期格式化內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Spring
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
欧美freesex黑人又粗又大| 国产suv精品一区二区四区视频| 精品国产麻豆| 老牛国内精品亚洲成av人片| 国产精久久久| 国产欧美激情| 久久一区精品| 亚洲激情黄色| 快she精品国产999| 国产一区成人| 蜜臀91精品国产高清在线观看| 国产第一亚洲| 成人一区不卡| 日韩久久视频| 亚洲欧美日韩国产| 亚洲图片久久| 麻豆精品一区二区综合av| 欧美视频一区| 精品在线网站观看| 欧美aa一级| 手机精品视频在线观看| 一级欧美视频| 国产极品嫩模在线观看91精品| 成人在线免费观看91| 日韩电影免费网站| 亚洲网站视频| 蜜臀av在线播放一区二区三区| 日日夜夜免费精品视频| 蜜桃免费网站一区二区三区| 91精品丝袜国产高跟在线| 国产精品三p一区二区| 国产一区二区三区不卡视频网站 | 日本在线高清| 亚洲激情二区| 日韩三级视频| 久久男人av| 亚洲欧美伊人| 91亚洲无吗| 欧美一区久久久| 国产精品婷婷| 亚洲午夜黄色| 国产亚洲精品美女久久久久久久久久| 1024精品一区二区三区| 男人操女人的视频在线观看欧美| 亚洲精品在线国产| 久久久久美女| 国产欧美成人| 日韩精品一区二区三区av| 青草av.久久免费一区| 亚洲国产成人精品女人| 亚洲精品成a人ⅴ香蕉片| 国内自拍视频一区二区三区| 免费视频亚洲| 国产欧美日韩精品高清二区综合区| 成人在线视频中文字幕| 在线亚洲一区| 国产精品xxx在线观看| 欧美精品一二| 欧美一级网站| 国产一区日韩欧美| 国产精品videosex极品| 欧美日韩少妇| 国产在线不卡一区二区三区| 亚洲免费婷婷| 精品久久电影| 中文字幕av一区二区三区四区| 国产一区国产二区国产三区| 中文字幕日韩亚洲| 亚洲精品福利电影| 日韩国产欧美在线播放| 国产精品99一区二区| 精品视频91| 亚洲精品九九| 久久精品国产99久久| 美女久久久久久| 四虎在线精品| 免费成人网www| 久久精品国产福利| 日韩精品一二区| 狠狠久久伊人中文字幕| 日日夜夜免费精品视频| 国产精品字幕| 亚洲深深色噜噜狠狠爱网站| 欧美一区二区三区高清视频| 日本va欧美va瓶| 亚洲精品在线二区| 福利片在线一区二区| 不卡中文字幕| 欧美一级网址| 亚洲免费福利| 婷婷精品在线| 久久精品av| 久久69成人| 日韩一区精品| 精品成人免费一区二区在线播放| 国产美女久久| 日韩一区精品视频| 欧美特黄一级| 日韩精品一区二区三区免费观影 | 日本一区福利在线| 久久久夜精品| 国产一区二区三区久久| 欧美a在线观看| 国产日韩一区二区三区在线播放 | 亚洲精品自拍| 日av在线不卡| 亚洲第一区色| 日韩免费小视频| 亚洲黄色免费看| 免费一二一二在线视频| 超级白嫩亚洲国产第一| 精品国产乱码久久久| 麻豆中文一区二区| 欧美精品1区| 久久wwww| 国产精品99久久免费| 国产伦精品一区二区三区在线播放| 美女久久一区| 亚洲美洲欧洲综合国产一区| 中文在线一区| 免费在线视频一区| 另类小说一区二区三区| 亚洲一区av| 丝袜美腿高跟呻吟高潮一区| 午夜久久一区| 久久夜色精品| 亚洲一级大片| 日韩精选在线| 136国产福利精品导航网址| 欧美午夜精彩| 久久人人97超碰国产公开结果| 免费高潮视频95在线观看网站| 欧美久久亚洲| 奇米亚洲欧美| 久久只有精品| 日韩久久视频| 免费观看不卡av| 亚洲女人av| 亚洲精品动态| 国产精品分类| 亚洲成人不卡| 欧美精品自拍| 日本一区免费网站| 国产日韩一区二区三区在线| 国产另类在线| 成人在线观看免费视频| 九九色在线视频| 激情综合在线| 综合精品一区| 国产精品调教| 国产成人77亚洲精品www| 欧美一区三区| 一区二区日韩免费看| 国产欧美一区二区三区精品观看| 精品久久久久久久| 91精品国产福利在线观看麻豆| 国产精品毛片| 日本强好片久久久久久aaa| 国产精品探花在线观看| 超碰在线99| 视频一区二区不卡| 国产欧美一区二区三区精品观看| 国产精品白丝一区二区三区| 在线手机中文字幕| 欧美一级专区| 国产乱码精品一区二区亚洲| japanese国产精品| 日韩电影在线视频| 欧美激情久久久久久久久久久| 国产福利一区二区三区在线播放| 欧美不卡视频| 国产欧美一区二区色老头| 丝袜美腿一区二区三区| 欧美成人国产| sm捆绑调教国产免费网站在线观看 | 国产精品99视频| 狠狠躁少妇一区二区三区| 亚洲高清不卡| 日本中文字幕一区二区| 国产一区二区精品久| 免费看的黄色欧美网站| 国产精品美女午夜爽爽| 亚洲www免费| 日本不卡在线视频| 免费看av不卡| 欧美日韩1区| 宅男在线一区| 九九99久久精品在免费线bt| 99国产精品自拍| 国产精品乱战久久久| 91九色精品| 国产精品成人3p一区二区三区| 亚洲免费激情| 精品五月天堂| 亚洲久久视频| 久久久夜精品| 免费一级欧美在线观看视频 | 久久人人97超碰国产公开结果| 日韩av黄色在线| 香蕉国产精品|