0

我正在使用 Spring MVC 和 Orika 将一些实体映射到 XML,但我面临的问题是,当我尝试在同一个实例中重用 MapperFactory 和一些新的映射器时,不仅不删除我以前的映射器注册了,但据说添加了新的之后,只在 map 方法调用中调用,这是我注册的第一个映射器。

这里有一些代码:

@Override
public void configureMapper() {
    ConverterFactory converterFactory = factory.getConverterFactory();
    ClassMapBuilder builder = factory.classMap(PublicProcurement.class, RequestForQuotationBody.class)
            .mapNulls(false);
    for (DocumentBodyMapper<RequestForQuotationBody, PublicProcurement> mapper : mappers) {
        mapper.register(builder, converterFactory);
    }
    builder.register();
}

@Override
public void setMappers(List<DocumentBodyMapper<RequestForQuotationBody, PublicProcurement>> documentBodyMappers) {
    this.mappers = documentBodyMappers;
}

所以第一次我用 {AMapper.class} 配置 MapperFactor 一个映射器列表,然后在完成创建该 xml 后,我再次调用,这次传递一个映射器列表 {BMapper.class,CMapper.class}。但是这次当我调用地图时。只有 AMapper.class 出现,所以只有关于 AMapper 的 xml 出现。

知道如何重置 MapperFactory 吗?

4

1 回答 1

0

最后,由于使用 Spring,我将映射器定义为原型,并在每个事务中创建一个新实例以清理 mapperFactory

于 2015-05-17T09:06:53.960 回答