SpringMVC 类型转换
SpringMVC 类型转换
Spring引入通用的数据类型转换系统,其定义了SPI接口和相应的运行时执行类型转换的API,提供无状态、强类型其可以在任意类型之间进行类型转换,可以用于任何需要的地方(如SpEL、数据绑定等)
内置类型转换器
<!--开启类型转换服务-->
<mvc:annotation-driven conversion-service="conversionService"/>
<!--装配自定义转换类Bean-->
<bean id="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
<property name="converters">
<list>
<bean class="com.tobie.converter.StringToDateConverter"/>
</list>
</property>
</bean>
自定义类型转换器
package com.tobie.converter;
import org.springframework.core.convert.converter.Converter;
import org.springframework.core.convert.support.GenericConversionService;
import org.springframework.stereotype.Component;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* @author Tobieance
* @description 自定义字符串到日期转换类
* @date 2023-09-13 16:41
*/
@Component
public class StringToDateConverter implements Converter<String, Date> {
@Override
public Date convert(String s) {
Date date = null;
try {
String pattern = "FALSE";
String pattern1 = "\\d{4}-\\d{1,2}-\\d{1,2}";
String pattern2 = "\\d{4}/\\d{1,2}/\\d{1,2}";
if (s.matches(pattern1)) {
pattern = "yyyy-MM-dd";
} else if (s.matches(pattern2)) {
pattern = "yyyy/MM/dd";
} else {
System.out.println(pattern);
return null;
}
SimpleDateFormat format = new SimpleDateFormat(pattern);
date = format.parse(s);
//可以使用正则表达式判断日期字符串格式是否合法(支持yyyy-MM-dd和yyyy/MM/dd)
} catch (Exception e) {
e.printStackTrace();
}
return date;
}
//测试自定义类型转换器
public static void main(String[] args) {
//创建类型转换服务实例
GenericConversionService genericConversionService = new GenericConversionService();
//向类型转换服务实例中注册自定义类型转换器
genericConversionService.addConverter(new StringToDateConverter());
String dateString = "2023-09-01";
Date date = genericConversionService.convert(dateString, Date.class);
System.out.println(date);
}
}
The whole significance of life lies in the unremitting efforts to explore the unknown and increase knowledge.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了