型別轉換
一些表示基於 String 的請求輸入的註解控制器方法引數(例如,@RequestParam
、@RequestHeader
、@PathVariable
、@MatrixVariable
和 @CookieValue
)如果引數被宣告為非 String
型別,則可能需要型別轉換。
對於這種情況,型別轉換會根據配置的轉換器自動應用。預設情況下,支援簡單型別(如 int
、long
、Date
等)。型別轉換可以透過 WebDataBinder
(參見 DataBinder
)或透過向 FormattingConversionService
註冊 Formatter
(參見 Spring 欄位格式化)進行定製。
型別轉換中的一個實際問題是空字串源值的處理。如果轉換結果為 null
,則此類值被視為缺失。對於 Long
、UUID
和其他目標型別,可能會出現這種情況。如果你想允許注入 null
,可以使用引數註解上的 required
標誌,或者將引數宣告為 @Nullable
。