1. 程式人生 > >Spring MVC 的 Converter 和 Formatter

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。