Spring MVC|自定義類型轉換器

Spring MVC 框架內置了許多類型轉換器供我們使用,但是如果某些業務需求無法使用內置的轉換器來完成,我們就必須自己編寫轉換器了。
步驟: 案例:將yyyy-MM-dd類型的字符串轉換爲日期對象。
  1. 編寫轉換器類,該類需要實現 org.springframework.core.convert.converter.Converter 接口

public interface Converter<S, T> {
    @Nullable
    T convert(S var1);
}

  該接口有兩個泛型,S 表示被轉換數據的 類型,T 表示轉換後數據的類型。具體轉換的邏輯的要在 convert 方法中編寫。在此案例中我們需要把字符串轉換成日期對象。

public class StringToDateConverter implements Converter<String, Date> {
    @Override
    public Date convert(String source) {
        try {
            return source.isEmpty() ? null : new SimpleDateFormat("yyyy-MM-dd").parse(source);
        } catch (ParseException e) {
            throw new RuntimeException(e);
        }
    }
}

  2. 在IOC容器加入該轉換器,並且開啓使用。

	<!-- 配置類型轉換器工廠 -->
    <bean id="myConversionService" class="org.springframework.context.support.ConversionServiceFactoryBean">
    	<!--converters是一個泛型Set集合-->
        <property name="converters">
            <set>
                <!-- 可以給工廠類注入多個類型轉換器 -->
                <bean class="cn.itcast.utils.StringToDateConverter"></bean>
            </set>
        </property>
    </bean>
    <!-- 在mvc:annotation標籤中引用配置的類型轉換服務 -->
    <mvc:annotation-driven conversion-service="myConversionService"></mvc:annotation-driven>
public class ConversionServiceFactoryBean implements FactoryBean<ConversionService>, InitializingBean {
    @Nullable
    private Set<?> converters;
}
發佈了46 篇原創文章 · 獲贊 1 · 訪問量 2499
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章