Spring早期使用PropertyEditor进行Object与String的转换。
到Spring
3后,Spring提供了统一的ConversionService API和强类型的Converter
SPI,以实现转换逻辑。Spring容器使用该系统来绑定bean property values。
但是,除了格式转换,你还经常需要本地化String
values。也就是以当地格式展示,如货币、日期等。通用的core.convert Converter SPI不能直接完成格式化需求。基于此,Spring 3
引入了 Formatter SPI,相比PropertyEditors简单直接。
ConversionService 为Converter
SPI和Formatter SPI提供了统一的 API。

PropertyEditor:
Spring早期使用PropertyEditor进行Object与String的转换。
ConversionService:Spring 3
引入了core.convert 包,提供了通用的类型转换系统。
Data Binding: Spring
web中用来解析参数字符类型的参数,并绑定到实体中 Formatter:Spring 3 引入了 Formatter
SPI,相比PropertyEditors简单直接。

Spring应用中,不会自动注册ConversionService
bean,就是说默认基于PropertyEditor。

相关类和接口

ConversionService:这是Spring
类型转换体系的核心接口
ConversionServiceFactoryBean:这个相当于是类型转换器的容器,里面可以配置很多个转换器
转换器接口:
Converter:最简单的转换器接口,将S类型转为T类型
ConverterFactory:将S类型转换为另一种类型T及其子类型R的转换器接口。将相同系列多个Converter封装到一起
GenericConverter:相对于Converter接口,该接口会根据源类型与目标类型的上下文信息进行转换

参考:
http://www.cnblogs.com/sonng/p/6658825.html

http://www.cnblogs.com/larryzeal/p/5951196.html
http://www.cnblogs.com/larryzeal/p/5953391.html
http://docs.spring.io/spring/docs/current/spring-framework-reference/htmlsingle/#format-configuring-formatting-globaldatetimeformat
http://docs.spring.io/spring/docs/current/spring-framework-reference/htmlsingle/#format-CustomFormatAnnotations

Spring中的类型转换与数据绑定(PropertyEditor、ConversionService、Data Binding、Formatter)的更多相关文章

  1. 【小家Spring】聊聊Spring中的数据绑定 --- BeanWrapper以及内省Introspector和PropertyDescriptor

    #### 每篇一句 > 千古以来要饭的没有要早饭的,知道为什么吗? #### 相关阅读 [[小家Spring]聊聊Spring中的数据转换:Converter.ConversionService ...

  2. 【小家Spring】聊聊Spring中的数据绑定 --- DataBinder本尊(源码分析)

    每篇一句 唯有热爱和坚持,才能让你在程序人生中屹立不倒,切忌跟风什么语言或就学什么去~ 相关阅读 [小家Spring]聊聊Spring中的数据绑定 --- 属性访问器PropertyAccessor和 ...

  3. Spring官网阅读(十六)Spring中的数据绑定

    文章目录 DataBinder UML类图 使用示例 源码分析 bind方法 doBind方法 applyPropertyValues方法 获取一个属性访问器 通过属性访问器直接set属性值 1.se ...

  4. Spring官网阅读(十五)Spring中的格式化(Formatter)

    文章目录 Formatter 接口定义 继承树 注解驱动的格式化 AnnotationFormatterFactory FormatterRegistry 接口定义 UML类图 FormattingC ...

  5. Spring Framework 官方文档学习(四)之Validation、Data Binding、Type Conversion

    本篇太乱,请移步: Spring Framework 官方文档学习(四)之Validation.Data Binding.Type Conversion(一) 写了删删了写,反复几次,对自己的描述很不 ...

  6. Spring官网阅读(十四)Spring中的BeanWrapper及类型转换

    文章目录 接口定义 继承关系 接口功能 1.PropertyEditorRegistry(属性编辑器注册器) 接口定义 PropertyEditor 概念 Spring中对PropertyEditor ...

  7. Spring ConversionService 类型转换(二) ConversionService

    Spring ConversionService 类型转换(二) ConversionService Spring 系列目录(https://www.cnblogs.com/binarylei/p/1 ...

  8. Spring中文文档

    前一段时间翻译了Jetty的一部分文档,感觉对阅读英文没有大的提高(*^-^*),毕竟Jetty的受众面还是比较小的,而且翻译过程中发现Jetty的文档写的不是很好,所以呢翻译的兴趣慢慢就不大了,只能 ...

  9. SpringMVC类型转换、数据绑定详解[附带源码分析]

    目录 前言 属性编辑器介绍 重要接口和类介绍 部分类和接口测试 源码分析 编写自定义的属性编辑器 总结 参考资料 前言 SpringMVC是目前主流的Web MVC框架之一. 如果有同学对它不熟悉,那 ...

随机推荐

  1. .Net程序帮助文档制作

    一,准备工作 1,首先介绍一款VS的代码注释插件GhostDoc 你也许认为我们在代码中敲入///就能自动生成xml注释,但这种注释是没有说明文字的.而GhostDoc可以生成一些简单的说明文字,如果 ...

  2. Nginx优化(十七)

    [教程主题]:Nginx优化 [课程录制]: 创E [主要内容] Nginx 优化 nginx介绍 Nginx是俄罗斯人编写的十分轻量级的HTTP服务器,Nginx,它的发音为“engine X”,是 ...

  3. Python基础知识小结

    1. 关于函数传参 def func(n, *args, **kwargs): print n print args print kwargs if __name__ == '__main__': # ...

  4. RavenDb学习(五)结果转换

    )Result Transformers public class Order { public DateTime OrderedAt { get; set; } public Status Stat ...

  5. maven工程如何引用css和js文件

    工程目录结构如下图: 目的: 在index.jsp中引用hello.js和base.css文件 实现: 在web.xml中,新增<servlet-mapping>     <serv ...

  6. ASP.NET中使用jQuery插件实现图片幻灯效果

    参照网上的资料及提供的jQuery插件实现图片幻灯效果. 1.页面前台代码: //头部引用 <head runat="server"><title>< ...

  7. C++头文件的工作原理

    一.C++编译模式通常,在一个C++程序中,只包含两类文件——.cpp文件和.h文件.其中,.cpp文件被称作C++源文件,里面放的都是C++的源代码:而.h文件则被称作C++头文件,里面放的也是C+ ...

  8. ASK,OOK,FSK的联系和区别

    转自:http://www.cnblogs.com/zhihongyu/archive/2012/04/12/2443617.html ASK是幅移键控调制的简写,例如二进制的,把二进制符号0和1分别 ...

  9. 【CentOS】CentOS7.0 mysql与卸载

    mysql安装: 在使用命令 yum list mysql-server 安装mysql的时候,发现没有mysql的包.这时候,我们需要下载一个 下载包 wget http://repo.mysql. ...

  10. ubuntu 14.04安装 DevStack的脚本配置文件——localrc

    本文ubuntu 14.04安装 DevStack的脚本配置文件——localrc,本文件名已经逐渐被取代,但是出于后向兼容性,使用该文件仍然可以为stack.sh安装脚本指定安装DevStack时的 ...