2016-09-20 108 views
1

我正在使用ModelMapper在对象之间做直接映射。应该重用ModelMapper实例来利用缓存的TypeMaps吗?

ModelMapper mapper = new ModelMapper(); 
// TypeMap created 
mapper.map(sourceObj, destObj); 

mapper = new ModelMapper(); 
// TypeMap is recreated 
mapper.map(sourceObj, destObj); 

我在源代码中发现,如果一个TypeMapsourceObjdestObj之间存在,将在getOrCreate方法缓存TypeMap

至于我可以告诉这个缓存是联系在一起的映射器实例,也就是说如果我不得不使用新ModelMapper实例sourceObjdestObj映射为第二次,它必须重新创建TypeMap

我假设这是一个相当昂贵的操作,如果我将sourceObj的集合映射到destObj。这使我得出结论,我应该重新使用ModelMapper实例。

这个结论是否正确?

谢谢

回答

3

是的。有关于此的FAQ甚至有一节:

我应该重复使用我的ModelMapper实例吗?

除非在相同类型之间需要不同的映射,否则最好重新使用同一个ModelMapper实例。如果您使用依赖注入容器,则可以通过将ModelMapper配置为单例来完成此任务。

+0

谢谢!不知何故错过了该部分。 – Avner