Spring Boot默認注冊的轉換器列表及其功能說明。這些轉換器使得控制器方法可以直接接收Integer、Long、Date等類型參數,無需手動實現轉換

以下是Spring Boot默認注冊的轉換器列表及其功能說明。這些轉換器使得控制器方法可以直接接收IntegerLongDate等類型參數,無需手動實現轉換:


默認轉換器列表及功能

1. 基礎類型轉換器
轉換器名稱功能示例場景
StringToIntegerConverter將字符串轉換為IntegerURL參數?count=123Integer count
StringToLongConverter將字符串轉換為LongURL參數?id=1000LLong id
StringToDoubleConverter將字符串轉換為DoubleURL參數?price=19.99Double price
StringToBooleanConverter將字符串(如true/false)轉換為BooleanURL參數?active=trueBoolean active

2. 日期時間轉換器
轉換器名稱功能示例場景
StringToDateConverter將字符串轉換為java.util.Date(默認格式yyyy-MM-dd HH:mm:ssURL參數?date=2023-10-01Date date
StringToLocalDateConverter將字符串轉換為java.time.LocalDate(默認格式yyyy-MM-ddURL參數?birthday=1990-01-01LocalDate birthday
StringToLocalDateTimeConverter轉換為LocalDateTime(默認格式yyyy-MM-dd HH:mm:ssURL參數?createTime=2023-10-01T12:30:00LocalDateTime createTime

3. 集合與數組轉換器
轉換器名稱功能示例場景
StringToArrayConverter將逗號分隔的字符串轉換為數組(如String[]URL參數?tags=a,b,cString[] tags
StringToCollectionConverter轉換為集合類型(如List<String>Set<String>URL參數?ids=1,2,3List<String> ids

4. 枚舉與特殊類型轉換器
轉換器名稱功能示例場景
StringToEnumConverter將字符串轉換為枚舉類型(通過枚舉名稱匹配)URL參數?status=ACTIVEStatusEnum status
StringToUUIDConverter將字符串轉換為UUIDURL參數?uuid=550e8400-e29b-41d4-a716-446655440000UUID uuid
StringToDurationConverter將字符串(如"10s")轉換為java.time.DurationURL參數?timeout=30sDuration timeout

5. 其他實用轉換器
轉換器名稱功能示例場景
SpelExpressionConverter使用SpEL表達式解析參數(需開啟spring.expression.spel-enabled=trueURL參數?size=#{T(java.lang.Math).random()} → 動態計算值
StringToURIConverter將字符串轉換為URI對象URL參數?url=http://example.comURI url

默認轉換器的注冊機制

Spring Boot在啟動時通過以下方式自動注冊這些轉換器:

  1. FormattingConversionServiceFactoryBean

    • 注冊基礎類型、日期、枚舉等轉換器。
    • 支持@NumberFormat@DateTimeFormat注解。
  2. WebConversionService

    • 擴展FormattingConversionService,添加Web相關的轉換器(如StringToArrayConverter)。

如何查看所有已注冊的轉換器?

可以通過以下代碼在控制器中輸出所有轉換器:

import org.springframework.core.convert.support.DefaultConversionService;
import org.springframework.web.bind.support.ConfigurableWebBindingInitializer;
import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter;// 示例:在配置類中打印所有轉換器
@Configuration
public class ConversionServiceConfig implements WebMvcConfigurer {@Autowiredprivate RequestMappingHandlerAdapter adapter;@PostConstructpublic void printConverters() {ConfigurableWebBindingInitializer bindingInitializer = (ConfigurableWebBindingInitializer) adapter.getWebBindingInitializer();DefaultConversionService conversionService = (DefaultConversionService) bindingInitializer.getConversionService();conversionService.getConverters().forEach(converter -> System.out.println("Registered Converter: " + converter.getClass().getName()));}
}

使用默認轉換器的注意事項

  1. 格式問題

    • 若日期格式不符合默認規則(如需dd/MM/yyyy),需通過@DateTimeFormat或自定義轉換器修改。
    • 數字類型(如Double)對非數字字符串(如"abc")會拋出異常。
  2. 類型沖突

    • 若多個轉換器匹配同一類型,優先級由Spring決定(如Converter優先于GenericConverter)。
  3. 自定義擴展

    • 可通過實現ConverterFormatter接口,并注冊到WebMvcConfigurer中覆蓋默認行為。

總結表格

類型支持的轉換默認格式/規則
基礎類型String → Integer/Long/Double/Boolean直接解析字符串為對應類型
日期時間String → Date/LocalDate/LocalDateTimeyyyy-MM-dd HH:mm:ss(可自定義)
集合/數組String → String[]/List/Set逗號分隔符(如a,b,c
枚舉String → Enum枚舉名稱匹配(不區分大小寫)
特殊類型String → UUID/Duration/URI標準格式(如UUID的xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

通過這些默認轉換器,Spring Boot大幅簡化了參數處理,但復雜場景仍需自定義擴展。

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

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

相關文章

chrome提示https不安全, 不能記住賬號密碼怎么辦? 可以利用js輸入賬號

背景: 在內網搭建的服務, 由于https證書問題, 可能會被chrome瀏覽器提示不安全 此時, 默認的記住賬號密碼功能就無法使用, 那么此時只能手動輸入了嗎? 想到了幾種方案 1.利用外置軟件, 模擬按鍵輸入(比如按鍵精靈, 缺點是依賴外部軟件, 運行速度也慢, 且執行時占用了輸入焦…

探秘Transformer系列之(25)--- KV Cache優化之處理長文本序列

探秘Transformer系列之&#xff08;25&#xff09;— KV Cache優化之處理長文本序列 文章目錄 探秘Transformer系列之&#xff08;25&#xff09;--- KV Cache優化之處理長文本序列0x00 概述0x01 優化依據1.1 稀疏性1.2 重要性1.3 小結 0x02 稀疏化1.1 分類1.2 靜態稀疏化1.2.1…

【開發經驗】結合實際問題解決詳述HTTPS通信過程

最近的開發調試過程中涉及到了HTTPS發送與接收&#xff0c;遇到實際問題才發現對這部分尚屬于一知半解。結合實際問題的解決過程來詳細整理以下HTTPS通信過程。 需要調試的功能為BMC作為客戶端向搭建好的Web服務器發送HTTPS請求&#xff0c;Web服務器負責接收處理發送過來的HT…

【Android】Android Activity 橫屏設置詳解及常見異常問題解決方法匯總

在 Android 開發中&#xff0c;我們經常需要控制 Activity 的屏幕方向&#xff0c;例如視頻播放、游戲、VR/AR 應用等場景通常希望默認橫屏顯示。本文將講解如何通過 Manifest 配置 和 Java/Kotlin 代碼 設置橫屏顯示&#xff0c;并分析常見設置無效的原因與解決方法。 一、通過…

文件相關:echo重定向管道命令擴展詳解

一、echo 文字內容 echo 會在終端中顯示參數指定的文字&#xff0c;通常會和 重定向 聯合使用 二、重定向 > 和 >> Linux 允許將命令執行結果 重定向到一個 文件將本應顯示在終端上的內容 輸出 / 追加 到指定文件中 其中&#xff1a; >表示輸出&#xff0c;會覆…

Python 中使用單例模式

有這么一種場景&#xff0c;Web服務中有一個全局資源池&#xff0c;在需要使用的地方就自然而言引用該全局資源池即可&#xff0c;此時可以將該資源池以單例模式實現。隨后&#xff0c;需要為某一特殊業務場景專門準備一個全局資源池&#xff0c;于是額外復制一份代碼新建了一個…

websocket深入-webflux+websocket

文章目錄 背景版本約定配置文件代碼使用webflux使用websocket配置文件handler基類實現類注冊路由 背景 基于更復雜的情況和更高的開發要求&#xff0c;我們可能會遇到必須同時要使用webflux和websocket的情況。 版本約定 JDK21Springboot 3.2.0Fastjson2lombok 配置文件 &…

致遠OA —— 表單數據獲取(前端)

文章目錄 :apple: 業務需求描述 &#x1f34e; 業務需求描述 測試案例&#xff1a; https://pan.quark.cn/s/3f58972f0a27 官網地址&#xff1a; 需求描述&#xff1a; 點擊獲取數據接口&#xff0c;調用后臺&#xff0c;將從后臺查詢到的數據回寫到表單的內容中。 如下…

51c嵌入式~繼電器~合集1

我自己的原文哦~ https://blog.51cto.com/whaosoft/13775821 一、繼電器應用細節 繼電器的應用&#xff0c;相信大家都知道&#xff0c;在電路中只要給它供電、斷電也就可以工作了。本文討論它的應用細節。 現在流行的接法 圖中&#xff0c;繼電器的線圈經過Q1作為開關&am…

前端性能優化核彈級方案:CSS分層渲染+Wasm,首屏提速300%!

前端性能優化核彈級方案&#xff1a;CSS分層渲染Wasm實現首屏提速300%的終極指南 在當今Web應用日益復雜的背景下&#xff0c;性能優化已成為前端開發的核心競爭力。本文將深入剖析兩種革命性的前端性能優化技術——CSS分層渲染與WebAssembly(Wasm)的協同應用&#xff0c;揭示…

初識Redis · 簡單理解Redis

目錄 前言&#xff1a; 分布式系統 開源節流 認識Redis 負載均衡 緩存 微服務 前言&#xff1a; 本文只是作為Redis的一篇雜談&#xff0c;簡單理解一下Redis為什么要存在&#xff0c;以及它能做到和它不能做到的事兒&#xff0c;簡單提及一下它對應的優勢有什么&#…

網絡通訊協議UDP轉發TCP工具_UdpToTcpRelay_雙向版

UDP/TCP網絡轉發器程序說明書 1. 程序概述 本程序是一個高性能網絡數據轉發工具&#xff0c;支持UDP和TCP協議之間的雙向數據轉發&#xff0c;并具備以下核心功能&#xff1a; 協議轉換&#xff1a;實現UDP?TCP協議轉換數據轉換&#xff1a;支持十六進制/ASCII格式的數據轉…

MCP 服務搭建與配置學習資源部分匯總

MCP 服務搭建與配置學習資源匯總 目錄 圖文教程GitHub 示例項目視頻課程不同開發語言實現案例 圖文教程 Cherry Studio 配置 MCP 服務教程 – 介紹如何在 Cherry Studio 客戶端中配置 MCP 服務器&#xff0c;讓 AI 模型能夠自主調用本地/網絡工具來完成任務&#xff0c;提升…

Selenium中`driver.get(htmlfile)`方法可能出現的超時問題

針對Selenium中driver.get(htmlfile)方法可能出現的超時問題&#xff0c;以下是幾種改進方案及具體實現方法&#xff1a; 1. 設置頁面加載超時時間 通過set_page_load_timeout()方法直接控制頁面加載的最大等待時間。若超時&#xff0c;會拋出TimeoutException異常&#xff0c…

20分鐘了解 MMAction2 框架設計

步驟3&#xff1a;構建一個識別器 # 修改此處 predictions[0].pred_score -> predictions[0].pred_scores.item print(Scores of Sample[0], predictions[0].pred_scores.item)步驟4&#xff1a;構建一個評估指標 # 修改此處 data_sample[pred_score].cpu().numpy() ->…

單軌小車懸掛輸送機安全規程

導語 大家好&#xff0c;我是社長&#xff0c;老K。專注分享智能制造和智能倉儲物流等內容。歡迎大家使用我們的倉儲物流技術AI智能體。 新書《智能物流系統構成與技術實踐》 新書《智能倉儲項目出海-英語手冊&#xff0c;必備&#xff01;》 完整版文件和更多學習資料&#xf…

C++之多態

文章目錄 一、多態的概念 多態的定義與類型 二、多態的實現 三、虛函數 虛函數的概念 虛函數的重寫/覆蓋 協變 析構函數的重寫/覆蓋 override,final關鍵字 override final 純虛函數與抽象類 三個概念辨析 四、多態實現的原理 虛函數表指針 動態綁定與靜態綁定 …

深入理解 HTML5 Audio:網頁音頻播放的新時代

在網頁開發領域,音頻的嵌入和播放一直是一個重要且不斷演進的話題。HTML5 的出現,為網頁音頻播放帶來了標準化的解決方案,極大地改善了開發者和用戶的體驗。 一、HTML5 之前的音頻播放狀況 在 HTML5 誕生之前,互聯網上缺乏統一的網頁音頻播放標準。當時,大多數音頻播放依…

重載和重寫的區別

重載 在同一個類中定義多個同名方法&#xff0c; 但參數列表不同&#xff08;參數類型、參數個數或參數順序不同&#xff09;返回值類型不同。 public class MathOperations {int add(int a, int b) {return a b;}double add(double a, double b) {return a b;} }重寫 子…

機器視覺+深度學習,讓電子零部件表面缺陷檢測效率大幅提升

在精密加工的3C電子行業中&#xff0c;一抹0.1毫米的油漬&#xff0c;一粒肉眼難辨的灰塵或將引發整機性能隱患。當制造業邁入微米級品質競爭時代&#xff0c;產品表面看似微不足道的臟污缺陷&#xff0c;正成為制約企業高質量發展的隱形枷鎖。分布無規律的污漬斑點、形態各異的…