2016-09-20 43 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