应该重用ModelMapper实例来利用缓存的TypeMaps吗?

Avn*_*ner 2 java modelmapper

我正在使用ModelMapper在对象之间进行直接映射.

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

mapper = new ModelMapper();
// TypeMap is recreated
mapper.map(sourceObj, destObj);
Run Code Online (Sandbox Code Playgroud)

我在源代码中发现,如果TypeMap之间不存在sourceObj,并destObj认为这将缓存TypeMap中的getOrCreate方法.

据我所知,这个缓存与mapper实例绑定,这意味着如果我必须使用新的ModelMapper实例第二次映射sourceObjto destObj,它将不得不重新创建TypeMap.

我假定这是一个相当昂贵的操作,说如果我映射的集合sourceObj来destObj.这使我得出结论,我应该重用ModelMapper实例.

这个结论是否正确?

谢谢

gto*_*nic 6

是.常见问题解答中甚至有一节关于此:

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

除非您在相同类型之间需要不同的映射,否则最好重用相同的ModelMapper实例.如果使用依赖项注入容器,则可以通过将ModelMapper配置为单例来实现此目的.