我正在使用ModelMapper在对象之间进行直接映射。
ModelMapper mapper = new ModelMapper();
// TypeMap created
mapper.map(sourceObj, destObj);
mapper = new ModelMapper();
// TypeMap is recreated
mapper.map(sourceObj, destObj);
我在源代码中注意到,如果TypeMap
和sourceObj
之间不存在destObj
它会在TypeMap
方法中缓存getOrCreate
据我所知,这个缓存与mapper实例绑定,这意味着如果我必须使用新的ModelMapper实例第二次将sourceObj
映射到destObj
,那么它将具有重新创建TypeMap
。
我假设这是一个相当昂贵的操作,比如说我将sourceObj
的集合映射到destObj
。这使我得出结论,我应该重新使用ModelMapper实例。
这个结论是否正确?
感谢
答案 0 :(得分:5)
是。 FAQ中甚至有关于此的部分:
我应该重用我的ModelMapper实例吗?
除非您需要在相同类型之间进行不同的映射,否则最好重新使用相同的ModelMapper实例。如果使用依赖项注入容器,则可以通过将ModelMapper配置为单例来完成此操作。