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“ />