Spring MVC擴展消息轉換器-->格式化時間信息

Spring MVC 的消息轉換器的作用:在 HTTP 請求/響應與 Java 對象之間進行轉換

可以自行擴展消息轉換器

一、創建對象映射規則

package com.sky.json;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;/*** 對象映射器:基于jackson將Java對象轉為json,或者將json轉為Java對象* 將JSON解析為Java對象的過程稱為 [從JSON反序列化Java對象]* 從Java對象生成JSON的過程稱為 [序列化Java對象到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 DEFAULT_DATE_TIME_FORMAT = "yyyy-MM-dd HH:mm";public static final String DEFAULT_TIME_FORMAT = "HH:mm:ss";public JacksonObjectMapper() {super();//收到未知屬性時不報異常this.configure(FAIL_ON_UNKNOWN_PROPERTIES, false);//反序列化時,屬性不存在的兼容處理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)));//注冊功能模塊 例如,可以添加自定義序列化器和反序列化器this.registerModule(simpleModule);}
}

二、擴展消息轉換器

package com.sky.config;import com.sky.interceptor.JwtTokenAdminInterceptor;
import com.sky.json.JacksonObjectMapper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;import java.util.List;/*** 配置類,注冊web層相關組件*/
@Configuration
@Slf4j
public class WebMvcConfiguration extends WebMvcConfigurationSupport {// ...// .../*** 擴展消息轉換器* 全局時間格式化* @param converters*/@Overrideprotected void extendMessageConverters(List<HttpMessageConverter<?>> converters) {log.info("擴展消息轉換器");// 創建一個消息轉換器對象MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();// 為消息轉換器設置一個對象映射器,JacksonObjectMapper中規定了該怎樣轉換Java對象和Json數據converter.setObjectMapper(new JacksonObjectMapper());// 將自定義消息轉換器加入容器,設置優先級最高,Java對象通過網絡傳輸會執行轉換converters.add(0, converter);}
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/84846.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/84846.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/84846.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Elasticsearch 的自動補全以及RestAPI的使用

Elasticsearch 提供了強大的自動補全 (Autocomplete) 功能,以下為一個基礎的自動補全DSL語句 {"suggest": {"my_suggestion": { // 自定義建議器名稱&#xff0c;可按需修改"text": "ap", // 用戶輸入的前綴&#xff08;如搜索框…

1.4、SDH網狀拓撲

鏈形網星形網樹形網環形網網孔形網 1.鏈形拓撲 結構&#xff1a; 節點像鏈條一樣首尾依次串聯連接。信號從一個節點傳到下一個節點&#xff0c;直至終點。 特點&#xff1a; 簡單經濟&#xff1a; 結構最簡單&#xff0c;成本最低&#xff0c;適用于沿線覆蓋&#xff08;如鐵…

如何在 ArcGIS 中使用 Microsoft Excel 文件_20250614

如何在 ArcGIS 中使用 Microsoft Excel 文件 軟件版本&#xff1a;win11; ArcGIS10.8; Office2024 1. 確認 ArcGIS 10.8 對 .xlsx 文件的支持 ArcGIS 10.8 支持 .xlsx 文件&#xff08;Excel 2007 及以上格式&#xff09;&#xff0c;但需要安裝 Microsoft Access Database …

Python----OpenCV(圖像處理——圖像的多種屬性、RGB與BGR色彩空間、HSB、HSV與HSL、ROI區域)

Python----計算機視覺處理&#xff08;opencv&#xff1a;像素&#xff0c;RGB顏色&#xff0c;圖像的存儲&#xff0c;opencv安裝&#xff0c;代碼展示&#xff09; Python----計算機視覺處理&#xff08;Opencv&#xff1a;圖片顏色識別&#xff1a;RGB顏色空間&#xff0c;…

java設計模式[1]之設計模式概覽

文章目錄 設計模式什么是設計模式為什么要學習設計模式設計模式的設計原則設計模式的分類 設計模式 什么是設計模式 設計模式是前人根據經驗的總結&#xff0c;是軟件開發中的最佳實踐&#xff0c;幫助開發者在面對復雜設計問題時提供有效的解決方案。設計模式不僅僅只是一種…

aflplusplus:開源的模糊測試工具!全參數詳細教程!Kali Linux教程!(四)

使用 afl-lto clang LLVM 編譯器 1. -help 顯示可用選項 afl-lto --help 其他選項同上&#xff0c;這里不再展開敘述。 afl-lto 1. -help 顯示可用選項 afl-lto --help 其他選項同上&#xff0c;這里不再展開敘述。 afl-network-client 1. 幫助文檔 afl-network-cl…

區間合并:牛奶

區間合并&#xff1a;牛奶 牛奶 www.acwing.com/problem/content/description/1345/ 本質就是區間合并問題從第一次擠奶才開始計算兩個最長時間 import java.util.*;public class Main {static final int N 5010;static Pair[] pairs new Pair[N];static class Pair imple…

Hive實現值列表橫向展示(非列轉行)

一、場景說明: 當前有各個流程的節點名稱和節點時間。數倉中的表存在的格式為縱向存儲,分別為節點名稱、接收時間 現數據分析過程中需要將每個流程的節點時間橫向展示,如果沒有該節點則置空 這種區別于行轉列和列轉行的操作。(具體可參考博主**

藍橋杯20151 跳石頭

問題描述 小明正在和朋友們玩跳石頭的小游戲&#xff0c;一共有 n 塊石頭按 1 到 n 順序排成一排&#xff0c;第 i 塊石頭上寫有正整數權值 ci? 。 如果某一時刻小明在第 j 塊石頭&#xff0c;那么他可以選擇跳向第 jcj? 塊石頭 &#xff08;前提 jcj≤n &#xff09;或者跳…

深度學習——基于卷積神經網絡的MNIST手寫數字識別詳解

文章目錄 引言1. 環境準備和數據加載1.1 下載MNIST數據集1.2 數據可視化 2. 數據預處理3. 設備配置4. 構建卷積神經網絡模型5. 訓練和測試函數5.1 訓練函數5.2 測試函數 6. 模型訓練和評估6.1 初始化損失函數和優化器6.2 訓練過程 7. 關鍵點解析8. 完整代碼9. 總結 引言 手寫數…

Activiti初識

文章目錄 1 工作流介紹1_工作流概念介紹2 工作流系統3 適用行業4 具體應用5 實現方式 2 Activiti介紹1_BPM2 BPM 軟件3 BPMN 3 使用步驟1_部署 activiti2 流程定義3 流程定義部署4 啟動一個流程實例5 用戶查詢待辦任務(Task)6 用戶辦理任務7 流程結束 4 Activiti應用1_Activiti…

CyclicBarrier入門代碼解析

文章目錄 核心思想&#xff1a;組隊出游&#xff0c;人到齊了才出發 &#x1f68c;最簡單易懂的代碼示例代碼解析運行效果分析CyclicBarrier vs CountDownLatch 的關鍵區別CyclicBarrier在業務系統里面通常有什么常用的應用場景核心應用模式1. 數據并行處理與ETL&#xff08;最…

Maven 配置中繞過 HTTP 阻斷機制的完整解決方案

Maven 配置中繞過 HTTP 阻斷機制的完整解決方案 一、背景與問題分析 自 Maven 3.8.1 版本起&#xff0c;出于安全考慮&#xff0c;默認禁止了對 HTTP 倉庫的訪問。這一機制通過 <mirror> 配置中的 maven-default-http-blocker 實現&#xff0c;其作用是攔截所有使用 HT…

【大廠機試題解法筆記】恢復數字序列

題目 對于一個連續正整數組成的序列&#xff0c;可以將其拼接成一個字符串&#xff0c;再將字符串里的部分字符打亂順序。如序列8 9 10 11 12,拼接成的字符串為89101112,打亂一部分字符后得到90811211,原來的正整數10就被拆成了0和1。 現給定一個按如上規則得到的打亂字符的字…

MongoDB 事務有哪些限制和注意事項?

MongoDB 的多文檔 ACID 事務雖然強大&#xff0c;但在使用時確實有一些限制和需要特別注意的事項。 以下是主要的限制和注意事項&#xff1a; 1. 性能開銷 (Performance Overhead) 額外協調: 事務需要額外的協調工作&#xff0c;包括跟蹤事務狀態、管理鎖&#xff08;即使是樂…

CTF實戰技巧:獲取初始權限后如何高效查找Flag

CTF實戰技巧&#xff1a;獲取初始權限后如何高效查找Flag 在CTF比賽中&#xff0c;獲得初始訪問權限只是開始&#xff0c;真正的挑戰在于如何在系統中高效定位Flag。本文將分享我在滲透測試中總結的系統化Flag搜索方法&#xff0c;涵蓋Linux和Windows雙平臺。 引言&#xff1a;…

kafka Tool (Offset Explorer)使用SASL Plaintext進行身份驗證

一、前面和不需要認證的情況相同&#xff1a; 1、填寫Properties中的cluster name和版本&#xff0c;以及zk的ip和port 2、Advanced中填寫bootstrap servers 二、和不需要認證時不同的點&#xff1a; 1、Security的Type&#xff0c;不需要認證時選plaintext&#xff0c;需要認…

最小費用最大流算法

最小費用最大流算法 原理 問題:網絡中有源點(起點)和匯點(終點),每條邊有流量上限和單位流量費用。求: 從源點到匯點的最大流量在流量最大的前提下,總費用最小核心思想:在找增廣路時,選擇單位費用之和最小的路徑(使用SPFA找最短路) 實現步驟 建圖:使用鏈式前向…

從匯編的角度揭開C++ this指針的神秘面紗(上)

C中的this指針一直比較神秘。任何類的對象&#xff0c;都有一個this指針&#xff0c;無處不在。那么this指針的本質究竟是什么&#xff1f;this指針什么時候會被用到&#xff1f;今天通過幾段簡單的代碼&#xff0c;來揭秘一下。 要先揭秘this指針&#xff0c;先來說一下函數調…

18 - GCNet

論文《GCNet: Non-local Networks Meet Squeeze-Excitation Networks and Beyond》 1、作用 GCNet通過聚合每個查詢位置的全局上下文信息來捕獲長距離依賴關系&#xff0c;從而改善了圖像/視頻分類、對象檢測和分割等一系列識別任務的性能。非局部網絡&#xff08;NLNet&…