spring - 使用 Spring 依赖注入(inject)的自定义转换器

标签 spring dozer

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

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

  <converter type="org.dozer.converters.TestCustomConverter" >
    <class-a>org.dozer.vo.CustomDoubleObject</class-a>
    <class-b>java.lang.Double</class-b>
  </converter>

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

最佳答案

在前面的答案中的 CustomConverterWithIds 旁边,还可以注入(inject)自定义转换器来覆盖映射文件中配置部分中定义的转换器。这样,dozer 将使用注入(inject)的转换器,而不是使用默认构造函数实例化转换器。

<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>

关于spring - 使用 Spring 依赖注入(inject)的自定义转换器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6695884/

相关文章:

java - Spring外部配置

java - Spring Openid、OpenIDAuthenticationToken

java - 独立使用 JdbcTemplate

java - 推土机给我异常(exception)

list - 通用列表的推土机映射

java - Dozer Java API 如何执行?

java - 在哪里可以找到 Spring 3 IoC JavaConfig(注释)教程?

mysql - spring JPA java.sql.Date 接受无效日期

java - 使用 super-CSV 读取嵌套 POJO

java - 无法确定字段 : 'id' in Class in Dozer 的写入方法