Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 奥里卡清洁工厂_Java_Spring_Orika - Fatal编程技术网

Java 奥里卡清洁工厂

Java 奥里卡清洁工厂,java,spring,orika,Java,Spring,Orika,我正在使用Spring MVC和Orika将一些实体映射到XML中,但我面临的问题是,当我尝试在同一实例中用一些新的映射器重用MapperFactory时,不仅不删除我注册的以前的映射器,而且在假定添加了新的映射器之后,只在map方法调用中调用,我注册的第一个映射器 下面是一些代码: @Override public void configureMapper() { ConverterFactory converterFactory = factory.getConverterFacto

我正在使用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吗?

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

请注意每次重新创建MapperFactory所造成的开销,这绝对不是使用它的正确方法。这是我发现的清理mapperFactory并将其作为动态多重映射器重用的唯一方法。我想Orika不是为我的功能需求而设计的。也许我不明白为什么你需要清洁它。您想要映射到的类是有限的,可能每个请求都应该映射或不映射某些字段,那么您想要使用的是动态过滤器。我使用Orika映射任意JsonNode,我没有遇到过这个特殊的需要来清理映射器工厂。我想我没有领会你的意思,因为我有一个映射器,它可以记录一个映射器列表,这些映射器可以更改。想象一下,我的multiMapperClass有时可以注册一个ApperClass和一个BMapperClass,有时可以注册一个CMapperClass和一个BMapperClass。这就是为什么我需要清理MultiMapPerClassMapPerFactory的原因考虑对每种情况使用多个MapperFactory,而不是动态注册/清理映射器,如果MapperFactory的数量。。。