有没有一种方法可以在 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/