Spring 資料轉換

來源:互聯網
上載者:User

標籤:bool   es2017   spring   技術   引入   factory   編碼   images   ram   

Spring3引入了更加通用的類型轉換系統,其定義了SPI介面(Converter等)和相應的運行時執行類型轉換的API(ConversionService等),在Spring中它和PropertyEditor功能類似,可以替代PropertyEditor來轉換外部Bean屬性的值到Bean屬性需要的類型。

 

該類型轉換系統是Spring通用的,其定義在org.springframework.core.convert包中,不僅僅在Spring Web MVC情境下。目標是完全替換PropertyEditor,提供無狀態、強型別且可以在任意類型之間轉換的類型轉換系統,可以用於任何需要的地方,如SpEL、資料繫結。

1、類型轉換器:提供類型轉換的實現支援。

 

2、類型轉換器註冊器、類型轉換服務:提供類型轉換器註冊支援,運行時類型轉換API支援。

 

DefaultConversionService:預設的類型轉換服務實現;

DefaultFormattingConversionService:帶資料格式化支援的類型轉換服務實現,一般使用該服務實現即可。

 

3、Spring內建的類型轉換器如下所示:

類名

說明

第一組:標量轉換器

StringToBooleanConverter

String----->Boolean

true:true/on/yes/1; false:false/off/no/0

ObjectToStringConverter

Object----->String

調用toString方法轉換

StringToNumberConverterFactory

String----->Number(如Integer、Long等)

NumberToNumberConverterFactory

Number子類型(Integer、Long、Double等)<——> Number子類型(Integer、Long、Double等)

StringToCharacterConverter

String----->java.lang.Character

取字串第一個字元

NumberToCharacterConverter

Number子類型(Integer、Long、Double等)——> java.lang.Character

CharacterToNumberFactory

java.lang.Character ——>Number子類型(Integer、Long、Double等)

StringToEnumConverterFactory

String----->enum類型

通過Enum.valueOf將字串轉換為需要的enum類型

EnumToStringConverter

enum類型----->String

返回enum對象的name()值

StringToLocaleConverter

String----->java.util.Local

PropertiesToStringConverter

java.util.Properties----->String

預設通過ISO-8859-1解碼

StringToPropertiesConverter

String----->java.util.Properties

預設使用ISO-8859-1編碼

第二組:集合、數組相關轉換器

ArrayToCollectionConverter

任意S數組---->任意T集合(List、Set)

CollectionToArrayConverter

任意T集合(List、Set)---->任意S數組

ArrayToArrayConverter

任意S數組<---->任意T數組

CollectionToCollectionConverter

任意T集合(List、Set)<---->任意T集合(List、Set)

即集合之間的類型轉換

MapToMapConverter

Map<---->Map之間的轉換

ArrayToStringConverter

任意S數組---->String類型

StringToArrayConverter

String----->數組

預設通過“,”分割,且去除字串的兩邊空格(trim)

ArrayToObjectConverter

任意S數組---->任意Object的轉換

(如果目標類型和源類型相容,直接返回來源物件;否則返回S數組的第一個元素並進行類型轉換)

ObjectToArrayConverter

Object----->單元素數組

CollectionToStringConverter

任意T集合(List、Set)---->String類型

StringToCollectionConverter

String----->集合(List、Set)

預設通過“,”分割,且去除字串的兩邊空格(trim)

CollectionToObjectConverter

任意T集合---->任意Object的轉換

(如果目標類型和源類型相容,直接返回來源物件;否則返回S數組的第一個元素並進行類型轉換)

ObjectToCollectionConverter

Object----->單元素集合

第三組:預設(fallback)轉換器:之前的轉換器不能轉換時調用

ObjectToObjectConverter

Object(S)----->Object(T)

首先嘗試valueOf進行轉換、沒有則嘗試new 構造器(S)

IdToEntityConverter

Id(S)----->Entity(T)

尋找並調用public static T find[EntityName](S)擷取目標對象,EntityName是T類型的簡單類型

FallbackObjectToStringConverter

Object----->String

ConversionService作為恢複使用,即其他轉換器不能轉換時調用(執行對象的toString()方法)

S:代表源類型,T:代表目標類型

如上的轉換器在使用轉換服務實現DefaultConversionService和DefaultFormattingConversionService時會自動註冊。

 

Spring 資料轉換

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.