第十二章 自定义类型转换器
1.类型转换器#
作用:Spring通过类型转换器把配置文件中字符串类型的数据,转换成对象中成员变量对应类型的数据,从而完成注入
2.自定义类型转换器#
当Spring内部没有提供特定的类型转换器时,而程序员在应用过程中还需要使用,那么就需要程序员自己定义类型转换器
-
实现Converter<s,t>接口
public class MyDateConverter implements Converter<String, Date> { /* convert:将String类型转换为Date param:source 代表配置文件中的日期字符串 return:Date 返回Date类型,让Spring拿到转换后的数据 */ @Override public Date convert(String source) { Date date = null; try { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); date = sdf.parse(source); } catch (ParseException e) { e.printStackTrace(); } return date; } }
-
在Spring配置文件中进行配置
-
将MyDateConverter对象创建出来
<bean id="myDateConverter" class="com.dong.converter.MyDateConverter"/>
-
类型转换器的注册
目的:告知Spring框架,MyDateConverter是一个类型转换器 将MyDateConverter注入conversionService <bean id="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean"> <property name="converters"> <set> <ref bean="myDateConverter"/> </set> </property> </bean>
-
3.细节#
-
MyDateConverter中的日期格式, 可以通过依赖注入的方式, 由配置文件完成赋值
public class MyDateConverter implements Converter<String, Date> { private String pattern; public String getPattern() { return pattern; } public void setPattern(String pattern) { this.pattern = pattern; } /* convert:将String类型转换为Date param:source 代表配置文件中的日期字符串 return:Date 返回Date类型,让Spring拿到转换后的数据 */ @Override public Date convert(String source) { Date date = null; try { SimpleDateFormat sdf = new SimpleDateFormat(pattern); date = sdf.parse(source); } catch (ParseException e) { e.printStackTrace(); } return date; } }
<bean id="myDateConverter" class="com.dong.converter.MyDateConverter"> <property name="pattern" value="yyyy-MM-dd"/> </bean>
-
ConversionServiceFactoryBean定义的id属性值必须是
conversionService
-
Spring框架内置了日期类型装换器, 但格式有要求
日期格式: 2022/04/16 (不支持: 2022-4-16)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现