编程语言
首页 > 编程语言> > java-Dozer映射类级别是可访问的

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