Converter 和 Formatter 都可用于将一种对象类型转换成另一种对象类型。

Converter 是通用元件,可以将一种类型转换成另一种类型,可以在应用程序中的任意层中使用;

Formatter 只能将 String 转换成另一种 Java 类型,是专门为 Web 层设计的;在 Spring MVC 应用程序中,选择 Formatter 比选择 Converter 更合适。

Converter

为了创建 Converter, 必须编写一个实现 org.springframework.core.coverter.converter.Converter 接口的 Java 类

public interface Converter<S, T> {  // S 表示源类型,T 表示目标类型
public abstract T converter(S source);
}

为了使用 Spring MVC 应用程序中定制的 Converter,需要在 Spring MVC 配置文件中编写一个 conversionService bean。

Bean 的类名必须为 org.springframework.context.support.ConversionServiceFactoryBean。这个 bean 必须包含一个 converters 属性,它将列出要在应用中使用的所有定制 Converter。

Formatter

为了创建 Formatter,需要编写一个实现 org.springframework.format.Format 接口的 Java 类

public interface Formatter<T> extends Printer<t>, Parser<T>{  // T 是输入的字符串要转换成的目标类型
public abstract T parse(String text, Locale locale); // 利用指定的 Locale 将一个 String 解析成目标类型
public abstract String pring(T object, Locale locale); // 与 parse() 相反,返回目标类型的字符串表示法
}

为了在 Spring MVC 应用程序中使用 Formatter,需要利用 conversionService bean 对它进行注册。

bean 的类名称必须为 org.springframework.format.support.FormattingConversionServicefactoryBean。这个 bean 可以用一个 Formatters 属性注册 Formatter,用一个 converters 属性注册 converter。

注册 Formatter 的另一种方法是使用 Registrar。有了 Registrar,就不需要在 Spring MVC 配置文件中注册任何 Formatter 了,只在 Spring 配置文件中注册 Registrar。

Spring MVC 的 Converter 和 Formatter的更多相关文章

  1. Spring MVC No converter found for return value of type 解决方法

    1.在pom中添加 jackson <properties> <jackson.version>2.8.5</jackson.version> </prope ...

  2. Spring MVC温故而知新 – 参数绑定、转发与重定向、异常处理、拦截器

    请求参数绑定 当用户发送请求时,根据Spring MVC的请求处理流程,前端控制器会请求处理器映射器返回一个处理器,然后请求处理器适配器之心相应的处理器,此时处理器映射器会调用Spring Mvc 提 ...

  3. 在Spring MVC 中配置自定义的类型转换器

    方法一: 实现spring mvc 自带的 Formatter 接口 1.创建一个类来实现Formatter接口 import org.springframework.format.Formatter ...

  4. spring笔记2 spring MVC的基础知识2

    2,spring MVC的注解驱动控制器,rest风格的支持 作为spring mvc的明星级别的功能,无疑是使得自己的code比较优雅的秘密武器: @RequestMapping处理用户的请求,下面 ...

  5. Java Spring MVC

    Spring MVC的实现包括 实现Controller类和基于注解的Controller RequstMapping方式 依赖: <!-- https://mvnrepository.com/ ...

  6. spring MVC处理请求过程及配置详解

    本文主要梳理下Spring MVC处理http请求的过程,以及配置servlet及业务application需要的常用标签,及其包含的意义. spring MVC处理请求过程 首先看一个整体图 简单说 ...

  7. Supported method argument types Spring MVC

    Supported method argument types The following are the supported method arguments: Request or respons ...

  8. Spring MVC深入学习

    一.MVC思想 MVC思想简介:        MVC并不是java所特有的设计思想,也不是Web应用所特有的思想,它是所有面向对象程序设计语言都应该遵守的规范:MVC思想将一个应用部分分成三个基本部 ...

  9. Spring MVC 使用介绍(十三)数据验证 (一)基本介绍

    一.消息处理功能 Spring提供MessageSource接口用于提供消息处理功能: public interface MessageSource { String getMessage(Strin ...

随机推荐

  1. FluentData -Micro ORM with a fluent API that makes it simple to query a database 【MYSQL】

    官方地址:http://fluentdata.codeplex.com/documentation MYSQL: MySQL through the MySQL Connector .NET driv ...

  2. Python 面向对象(三)

    继承的实现原理 Python支持多继承 多继承的时候  属性查找的顺序 研究经典类和新式类在属性查找的不同 主要是形成菱形关系才有深度跟广度 广度优先 Python的继承原理  Python3的内置方 ...

  3. 在 iOS 上通过 802.11k、802.11r 和 802.11v 实现 Wi-Fi 网络漫游

    原文: https://support.apple.com/zh-cn/HT202628 了解 iOS 如何使用 Wi-Fi 网络标准提升客户端漫游性能.   iOS 支持在企业级 Wi-Fi 网络上 ...

  4. ijkplayer总结

    12.ijkplayer的使用过程: 11.ijkpalyer引言: ==== 12.ijkplayer的使用过程: >>举例mac系统编译.so文件:   ijkplayer默认是不支持 ...

  5. Pycharm2018的激活方法或破解方法(必须加host)

    修改hosts文件将0.0.0.0 account.jetbrains.com添加到hosts文件最后,注意hosts文件无后缀,如果遇到无法修改或权限问题,可以采用覆盖的方法去替换hosts文件 修 ...

  6. 学习 MeteoInfo二次开发教程(二)

    1.注意TSB_Select_Click等几个名称要改为toolStripButton2_Click等. 2.以下代码的位置与public Form1()函数并行. ToolStripButton _ ...

  7. 第二章 FFmpeg常用命令

    2.1 FFmpeg常见的命令大概分为6个部分 ffmpeg信息查询部分 公共操作参数部分 文件主要操作参数部分 视频操作参数部分 字幕操作参数部分 2.1.1 FFmpeg的封装转换 FFmpeg ...

  8. mysql 使用 GROUP BY 时报错 ERROR 1055 (42000)

    解决方法1:SET sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));这种修改只是暂时性的,还是在 my.ini 文件中的sq ...

  9. Suricata之outputs(输出选项)

    outputs stats.log(统计数据包信息的日志) 配置文件:默认开启,数据包统计时间间隔默认为8S 日志文件:主要统计规定时间间隔内数据包的总量,各种不同类型数据包的数量以及数据包的大小等信 ...

  10. linux 时间和时区设置

    在linux中与时间相关的文件有 /etc/localtime /etc/timezone 其中,/etc/localtime是用来描述本机时间,而 /etc/timezone是用来描述本机所属的时区 ...