spring的Converter是能夠將一種類型轉換成另外一種類型的一個對象, 自定義Converter須要實現Converter接口java
日期轉換器web
import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import org.springframework.core.convert.converter.Converter; /** * 字符串日期格式轉換器 * */ public class CustomGlobalStrToDataConverter implements Converter<String, Date>{ private String datePattern;//日期格式 //建立對象,並傳入構造參數 public CustomGlobalStrToDataConverter(String datePattern){ this.datePattern = datePattern; } @Override public Date convert(String source) { try { Date date = new SimpleDateFormat(datePattern).parse(source); return date; } catch (ParseException e) { e.printStackTrace(); } return null; } }
使用SpringMVC自定義的Converter, 須要在SpringMVC的配置文件中加入以下配置spring
<!-- 註解驅動:替咱們顯示的配置了最新版的註解的處理器映射器和處理器適配器 --> <mvc:annotation-driven conversion-service="myConversionService"/> <!-- 配置自定義轉換器 注意: 必定要將自定義的轉換器配置到註解驅動上,id不能使用conversionService,否則會出現ArrayList<?>的異常--> <bean id="myConversionService" class="org.springframework.context.support.ConversionServiceFactoryBean"> <property name="converters"> <set> <!-- 指定自定義轉換器的全路徑名稱 --> <bean class="com.guorong.controller.converter.CustomGlobalStrToDataConverter"> <constructor-arg name="datePattern" type="java.lang.String" value="yyyy-MM-dd hh:mm:ss"/> </bean> </set> </property> </bean>
Formatter和Converter同樣, 是將一種類型轉換成另外一種類型, 可是, Formatter的源類型必須是一個String, 目標類型是java類型.mvc
import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Locale; import org.springframework.format.Formatter; public class DateFormatter implements Formatter<Date>{ private String datePattern;//日期格式字符串 private SimpleDateFormat dateFormat;//日期格式類 public DateFormatter(String datePattern) { this.datePattern = datePattern; dateFormat = new SimpleDateFormat(datePattern); } //將Date格式化爲指定日期字符串,返回目標對象的字符串表示法 @Override public String print(Date date, Locale locale) { return dateFormat.format(date); } //將字符串日期解析成Date對象 @Override public Date parse(String source, Locale locale) throws ParseException { return dateFormat.parse(source); } }
springMVC配置文件ide
<!-- 註解驅動: 替咱們顯示的配置了最新版的註解的處理器映射器和處理器適配器 --> <mvc:annotation-driven conversion-service="conversionService"/> <bean id="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean"> <property name="formatters"> <set> <bean class="com.guorong.controller.converter.DateFormatter"> <constructor-arg name="datePattern" type="java.lang.String" value="yyyy-MM-dd"/> </bean> </set> </property> </bean>
Converter是通常工具, 能夠將一種類型轉換成另外一種類型, 例如, 將String轉換成Date, 或者Long轉換成Date, Conveter既能夠用在web層, 也能夠用在其餘層中, Formatter只能講String轉換層另外一種java類型, 例如, 將String轉換成Date, 但它不可能將Long轉換成Date類型, 所以Formatter適用於web層, 所以, SpringMVC應用程序中, 選擇Formatter比選擇Converter更合適.工具