在保留默认值的同时注册自定义转换服务?

时间:2012-12-20 11:33:22

标签: spring spring-mvc

在spring-mvc 3.2.RELEASE项目中,我想使用org.springframework.data.repository.support.DomainClassConverter轻松地为我注入实体。

使用此配置时工作正常:

<beans:bean id="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean" />

<beans:bean id="conversionService"
    class="org.springframework.core.convert.support.DefaultConversionService" /> 

<beans:bean
    class="org.springframework.data.repository.support.DomainClassConverter">
    <beans:constructor-arg ref="conversionService" />
</beans:bean>

<annotation-driven conversion-service="conversionService" />

但是Spring没有加载格式化程序来处理Joda时间类型,我得到“无法将类型java.lang.String的属性值转换为所需类型org.joda.time.LocalDate for property”

仅使用

<annotation-driven/>

Joda转换有效,但不是实体注入。

你如何连接它以便它们都能正常工作?

1 个答案:

答案 0 :(得分:3)

不确定这是否回答了问题,但我遇到了类似的问题,这就是我解决问题的方法。

我使用documentation

实现了自定义转换器和转换服务
<bean id="conversionService"
  class="org.springframework.context.support.ConversionServiceFactoryBean">
    <property name="converters">
        <list>
            <bean class="example.MyCustomConverter"/>
        </list>
    </property>
</bean>

结果是@NA所描述的 - 这失去了默认的joda时间支持,并且不相关的控制器中的以下定义不再有效

@PathVariable(value="day") @DateTimeFormat(pattern=DATE_FORMAT) LocalDate date

解决方案不是使用org.springframework.context.support.ConversionServiceFactoryBean,而是开始使用org.springframework.format.support.FormattingConversionServiceFactoryBean