Spring中的类型转换与数据绑定(PropertyEditor、ConversionService、Data Binding、Formatter)
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)的更多相关文章
- 【小家Spring】聊聊Spring中的数据绑定 --- BeanWrapper以及内省Introspector和PropertyDescriptor
#### 每篇一句 > 千古以来要饭的没有要早饭的,知道为什么吗? #### 相关阅读 [[小家Spring]聊聊Spring中的数据转换:Converter.ConversionService ...
- 【小家Spring】聊聊Spring中的数据绑定 --- DataBinder本尊(源码分析)
每篇一句 唯有热爱和坚持,才能让你在程序人生中屹立不倒,切忌跟风什么语言或就学什么去~ 相关阅读 [小家Spring]聊聊Spring中的数据绑定 --- 属性访问器PropertyAccessor和 ...
- Spring官网阅读(十六)Spring中的数据绑定
文章目录 DataBinder UML类图 使用示例 源码分析 bind方法 doBind方法 applyPropertyValues方法 获取一个属性访问器 通过属性访问器直接set属性值 1.se ...
- Spring官网阅读(十五)Spring中的格式化(Formatter)
文章目录 Formatter 接口定义 继承树 注解驱动的格式化 AnnotationFormatterFactory FormatterRegistry 接口定义 UML类图 FormattingC ...
- Spring Framework 官方文档学习(四)之Validation、Data Binding、Type Conversion
本篇太乱,请移步: Spring Framework 官方文档学习(四)之Validation.Data Binding.Type Conversion(一) 写了删删了写,反复几次,对自己的描述很不 ...
- Spring官网阅读(十四)Spring中的BeanWrapper及类型转换
文章目录 接口定义 继承关系 接口功能 1.PropertyEditorRegistry(属性编辑器注册器) 接口定义 PropertyEditor 概念 Spring中对PropertyEditor ...
- Spring ConversionService 类型转换(二) ConversionService
Spring ConversionService 类型转换(二) ConversionService Spring 系列目录(https://www.cnblogs.com/binarylei/p/1 ...
- Spring中文文档
前一段时间翻译了Jetty的一部分文档,感觉对阅读英文没有大的提高(*^-^*),毕竟Jetty的受众面还是比较小的,而且翻译过程中发现Jetty的文档写的不是很好,所以呢翻译的兴趣慢慢就不大了,只能 ...
- SpringMVC类型转换、数据绑定详解[附带源码分析]
目录 前言 属性编辑器介绍 重要接口和类介绍 部分类和接口测试 源码分析 编写自定义的属性编辑器 总结 参考资料 前言 SpringMVC是目前主流的Web MVC框架之一. 如果有同学对它不熟悉,那 ...
随机推荐
- [开发笔记]-ASP.NET项目在IIS上使用虚拟目录
说一下我想要实现的效果: 假如我做一个图片展示类的网站,或者其他需要用户上传文件的网站,需要将用户上传的文件保存到一个Uploadfiles文件夹下,一般我们在做项目时用户上传的文件都是保存在网站项目 ...
- Linux/Unix下的任务管理器-top命令
Windows下的任务管理器虽然不好用(个人更喜欢Process Explorer些),但也算方便,可以方便的查看进程,CPU,内存...也可以很容易的结束进程 没有图形化界面下的Linux,也有命令 ...
- nodejs开发——require与exports的使用
nodejs开发——require与exports的使用 另一片文章总结:http://www.cnblogs.com/hfultrastrong/p/8036682.html require req ...
- 通过android studio上传项目到github
第一步,下载git客户端,并且安装 下载地址:https://git-for-windows.github.io/ 第二步,在android studio中配置git(注意第一张图中的C:\Progr ...
- mxnet img2rec的使用,生成数据文件
建立文件夹 制作lst文件,即生成train.lst文件python im2rec.py ./mxrec/train ./mxdata --list --recursive train.lst文件格式 ...
- 一个完整的SAP RFC调用接口封装
因为经常需要访问sap操作数据,就封装了一个类方便调用,运行条件需要安装sap客户端,在sap客户端安装之后会带有一个com接口,本接口就通过这个com访问sap,因为com的后期绑定问题故使用了vb ...
- git patch 使用
使用git的时候,需要删除几个id,会对到之前的代码,但又想保留现在的代码,以便后面从新合并,所以就将现在的代码打包成patch,留到下次合并. 参考链接 http://www.jianshu.com ...
- Deep Residual Learning for Image Recognition这篇文章
作者:何凯明等,来自微软亚洲研究院: 这篇文章为CVPR的最佳论文奖:(conference on computer vision and pattern recognition) 在神经网络中,常遇 ...
- FTP服务器的配置与实现
一.准备工作 实验目的:完成FTP服务器的配置,并能熟练操作. 环境搭建: 虚拟机 vmware workstation windows2003镜像文件 Serv-U 主机 二.步骤 1,在虚拟机中 ...
- asp.net Core EF core ( Entity Framework 7 ) 数据库更新维护
CreateDatabaseIfNotExists等之前的API已经废弃,现在采用的是微软封装好,简化.高效的API,migrations 因为,旧API,要付出高昂的代价,以及局限性 打开VS20 ...