java-Dozer映射类级别是可访问的
作者:互联网
我正在使用推土机框架克隆我的对象.我希望推土机框架无需使用getter和setter即可克隆数据,为此,我在类级别设置了is-accessible属性.但这似乎不起作用.当我在字段级别设置为可访问时,它可以正常工作.
BeanMappingBuilder builder = new BeanMappingBuilder(){
@Override
protected void configure() {
mapping(type(A.class).accessible(true),type(A.class).accessible(true)).exclude("field1").exclude("field2");
}
};
m.addMapping(builder);
我希望使用可访问的原因是因为我在A类中有一个字段声明为
private SortedSet<String> foo;
但是吸气剂就像
public Collection<String> getFoo()
{
return foo;
}
我认为推土机找不到吸气剂,因为它正在为字段foo返回不同的类型.有人可以告诉我这是推土机中的错误还是我做错了什么?
在此先感谢您的帮助!!
解决方法:
请注意,如果Dozer在源类中找不到getter而在目标类中找不到setter,则会引发错误.
Afaik,数据类型的更改不重要,因为它使用了反射.
要回答您的第一个问题,与其在班级访问设置,不如只公开您需要的字段,风险会较小.例如:
DozerBeanMapper dozerBeanMapper = new DozerBeanMapper();
dozerBeanMapper.addMapping(getBeanMappingBuilder("fieldName",
SourceClassName.class,
DestClassName.class));
protected BeanMappingBuilder getBeanMappingBuilder(final String fieldName,
final Class typeA,
final Class typeB) {
return new BeanMappingBuilder() {
@Override
protected void configure() {
mapping(typeA
, typeB).fields(
field(fieldName).accessible(true), field(fieldName).accessible(true));
}
};
}
标签:dto,dozer,java 来源: https://codeday.me/bug/20191121/2051176.html