Spring MVC 的 Converter 和 Formatter
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。