让我们说我想映射以下两个类:
public class A {
String member;
public void setMember(String member) { this.member = member }
public String getMember() { return member }
}
public class B {
String member;
public B(String member) { this.member = member }
public String getMember() { return member }
}
Run Code Online (Sandbox Code Playgroud)
现在,当我想要Dozer进行以下转换时:dozerBeanMapper.map( a, B.class );由于缺少类的默认构造函数,我收到错误B.
解决这个问题的最佳方法是什么?使用自定义转换器?
如果B类不是您的API并且您无法控制它并且您打算无论如何都要映射成员属性,那么您可以使用自定义bean工厂,它可以将默认值传递给costructor:
<mapping>
<class-a>com.example.A</class-a>
<class-b bean-factory="com.example.factories.BFactory">
com.example.B
</class-b>
</mapping>
Run Code Online (Sandbox Code Playgroud)
你的工厂将实现org.dozer.BeanFactory接口:
public interface BeanFactory {
public Object createBean(Object source, Class sourceClass, String targetBeanId);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7403 次 |
| 最近记录: |