SpringMVC 配置多个conversionService

本文介绍了如何在SpringMVC中配置多个ConversionService,包括使用自定义转换器。当需要进行字符串到日期类型的转换并使用@DateTimeFormat进行数据格式化时,发现仅配置ConversionService无法解决问题。原因在于ConversionServiceFactoryBean不支持数据格式化。解决方案是将bean的class改为FormattingConversionServiceFactoryBean,以同时提供类型转换和数据格式化服务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

虽然SpringMVC默认的 ConversionService 可以做 strings, numbers, enums, collections, maps 和其他一些常见类型之间的转换, 但这远远不够, 一些自定义类型的数据转换需要我们自定义, 并且将自定义的转换类加入到  id="conversionService" 的bean中, 如下:
<bean id="conversionService"
        class="org.springframework.context.support.ConversionServiceFactoryBean">
    <property name="converters">
        <set>
            <bean class="example.MyCustomConverter"/>
        </set>
    </property>
</bean>

将其中 example.MyCustomConverter 换成自定义的类. 若有多个自定义转换器, 继续在set标签中添加 bean 即可.


至此, 自定义类型的转换已经完成, 但还存在一个问题,比如: 比如字符串转日期类型, 系统提供了这样一个数据格式化方法, 在日期变量声明时加上注解 @DateTimeFormat(pattern="yyyy-MM-dd"), 表单输入的字符串便可以自动格式化成对应的日期类型. 若按照上述ConversionService 的配置方法, 依然会返回400的错误, 这是怎么回事呢? 

原因在于这个 bean 的 class: org.springframework.context.support.ConversionServiceFactoryBean 只能提供 类型转换服务, 而不提供数据格式化服务,因此 我们需要将 这个class修改为既能提供类型转换服务, 又可以提供数据格式化服务的: org.springframework.format.support.FormattingConversionServiceFactoryBean

<bean id="conversionService"
        class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
    <property name="converters">
        <set>
            <bean class="example.MyCustomConverter"/>
        </set>
    </property>
</bean>
由于日期的格式化是系统默认提供的, 所以不需要做额外配置, 若需要自定义格式化类型, 需要在<property name="formatters"></property>中加入 自定义的格式化类. 跟上边的 converters 类似.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值