标签: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:带数据格式化支持的类型转换服务实现,一般使用该服务实现即可。
类名 |
说明 |
第一组:标量转换器 |
|
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时会自动注册。
标签:bool es2017 spring 技术 引入 factory 编码 images ram
原文地址:http://www.cnblogs.com/yuyutianxia/p/7478363.html