package org.springframework.core.convert.converter; public interface Converter<S, T> { // S 是源類型T 是目標類型T convert(S source); // 轉換S 類型的source 到T 目標類型的轉換方法 }
二、GenericConverter 和ConditionalGenericConverter:GenericConverter 接口實現能在多種類型之間進行轉換,ConditionalGenericConverter 是有條件的在多種類型之間進行轉換。GenericConverter:java
package org.springframework.core.convert.converter; public interface GenericConverter { Set<ConvertiblePair> getConvertibleTypes(); Object convert(Object source, TypeDescriptor sourceType, TypeDescriptor targetType); }
package org.springframework.core.convert.converter; public interface ConditionalGenericConverter extends GenericConverter { boolean matches(TypeDescriptor sourceType, TypeDescriptor targetType); }matches:用於判斷sourceType 和targetType 類型之間可否進行類型轉換。
package org.springframework.core.convert.converter; public interface ConverterFactory<S, R> { <T extends R> Converter<S, T> getConverter(Class<T> targetType); //S:源類型;R 目標類型的父類型;T:目標類型,且是R 類型的子類型; }
1、標量轉換器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 | 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 編碼 |
2、集合、數組相關轉換器數組
類名 | 說明 |
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----->單元素集合 |
1、StringToDateConverter:自定義String類型轉Date類型的轉換類;
2、StringToPhoneNumberConverter:自定義String類型轉PhoneNumberModel類型的轉換類安全
<mvc:annotation-driven conversion-service=「conversionService「 />