1

我正在尝试引入一个自定义转换器来转换对象集 --> 对象。在我的网络层中,我将使用域对象键获得逗号 (',') 分隔的字符串。

例如

如果数据库记录如下表名称所示

身份证名称

1个

2 乙

我有表的关联域对象。从网络层我得到 1,2 字符串,它作为我的域对象数组绑定到我的 DTO。

在这种情况下,我看到默认的 Spring 转换器字符串到对象数组优先于我的自定义转换器,并导致使用空域对象创建我的域对象数组。

但是,我希望执行我的转换器,它根据来自 DB 的 ID 获取域对象。

我如何强制我的转换器首先执行到 Spring 默认转换器。

PS:我将转换目标对象设为 Object 而不是我的 Domain 对象,因为我希望它是通用的并且应该适用于我的所有域对象。

我没有使用 mvc:annotation-driven,我们根据需要手动扩展了它。


<context:component-scan base-package="com.shivaji" use-default-filters="false">
    <context:include-filter expression="org.springframework.stereotype.Controller" type="annotation" />
  </context:component-scan>

  <bean class="com.shivaji.mvc.request.shivajiRequestMappingHandlerAdapter">
    <property name="webBindingInitializer">
      <bean class="org.springframework.web.bind.support.ConfigurableWebBindingInitializer">
        <property name="conversionService" ref="applicationConversionService" />
        <property name="validator" ref="validator" />
      </bean>
    </property>
    <property name="messageConverters">
      <list>
        <bean class="org.springframework.http.converter.ByteArrayHttpMessageConverter" />
        <bean class="org.springframework.http.converter.StringHttpMessageConverter" />
        <bean class="org.springframework.http.converter.FormHttpMessageConverter" />
        <bean class="org.springframework.http.converter.xml.SourceHttpMessageConverter" />
        <bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter" />
      </list>
    </property>
  </bean>

  <bean id="conversionServiceExposingInterceptor" class="org.springframework.web.servlet.handler.ConversionServiceExposingInterceptor">
    <constructor-arg ref="applicationConversionService" />
  </bean>

  <bean class="org.springframework.format.support.FormattingConversionServiceFactoryBean" id="applicationConversionService">
    <property name="converters">
      <set>
        <bean class="com.shivaji.converter.DateToStringConverter">
          <property name="pattern" value="dd-MM-yyyy HH:mm:ss.SSSSSS" />
        </bean>
      </set>
    </property>
  </bean>

  <!-- Support auto conversion -->
  <bean class="com.shivaji.converter.auto.AutoEntityToIdConverterBeanFactory" />
  <bean class="com.shivaji.converter.auto.AutoIdToEntityConverterBeanFactory" />

  <bean class="org.springframework.mapping.support.ConversionMapperFactory" id="conversionMapperFactory" autowire="byType" />
4

0 回答 0