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

NA.*_*NA. 5 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" />
Run Code Online (Sandbox Code Playgroud)

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

仅使用

<annotation-driven/>
Run Code Online (Sandbox Code Playgroud)

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

你怎么连接它,所以两个都工作?

Cra*_*ing 4

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

我已经使用文档实现了自定义转换器和转换服务

<bean id="conversionService"
  class="org.springframework.context.support.ConversionServiceFactoryBean">
    <property name="converters">
        <list>
            <bean class="example.MyCustomConverter"/>
        </list>
    </property>
</bean>
Run Code Online (Sandbox Code Playgroud)

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

@PathVariable(value="day") @DateTimeFormat(pattern=DATE_FORMAT) LocalDate date
Run Code Online (Sandbox Code Playgroud)

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