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;
}