具有Spring依赖注入的自定义转换器

Thi*_*kel 3 spring dozer

有没有办法在Dozer中定义一个自定义转换器,用于将一个顶级类型转换为另一个顶级类型,它本身就是一个Spring bean,因此可以注入其依赖项?

推土机文档建议添加以下XML定义:

  <converter type="org.dozer.converters.TestCustomConverter" >
    <class-a>org.dozer.vo.CustomDoubleObject</class-a>
    <class-b>java.lang.Double</class-b>
  </converter>
Run Code Online (Sandbox Code Playgroud)

不幸的是,这导致Dozer org.dozer.converters.TestCustomConverter直接实例化,这将跳过依赖注入.有没有办法引用Spring bean?

小智 8

在上一个答案中,CustomConverterWithIds旁边也可以注入自定义转换器来覆盖映射文件中配置部分中定义的转换器.这种方式推土机将使用注入的转换器,而不是使用默认构造函数实例化一个.

<bean id="dozerMapper" class="org.dozer.DozerBeanMapper" scope="singleton">
    <property name="mappingFiles">
        <list>
            <value><mapping-file-name1></value>
            <value><mapping-file-name2></value>
        </list> 
    </property>
    <property name="customConverters">
        <list>
            <ref bean="entityConverter"/>
        </list>
    </property>
</bean>

<configuration>
   <custom-converters>
     <converter type="my.domain.EntityConverter">
        <class-a>java.lang.Integer</class-a>
        <class-b>my.domain.MyEntity</class-b>
     </converter>
   <custom-converters>
</configuration>

<beans   .... >
   <bean id="entityConverter" class="my.domain.EntityConverter">
        <property ....
   </bean
</beans>
Run Code Online (Sandbox Code Playgroud)