2

ModelMapperを使用して、オブジェクト間の簡単なマップを作成しています。

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

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

ソース コードで、 と の間にaTypeMapが存在しない場合、 inメソッドがキャッシュされることに気付きました。sourceObjdestObjTypeMapgetOrCreate

私が知る限り、このキャッシュはマッパー インスタンスに関連付けられています。つまり、新しい ModelMapper インスタンスを使用して を 2 回目sourceObjにマップする必要がある場合は、 .destObjTypeMap

sourceObjのコレクションをにマッピングしている場合、これはかなり高価な操作であると想定していdestObjます。これにより、ModelMapper インスタンスを再利用する必要があるという結論に至りました。

この結論は正しいですか?

ありがとう

4

1 に答える 1

8

はい。これについては、 FAQにもセクションがあります。

ModelMapper インスタンスを再利用する必要がありますか?

同じタイプ間で異なるマッピングが必要でない限り、同じ ModelMapper インスタンスを再利用することをお勧めします。依存性注入コンテナーを使用する場合は、ModelMapper をシングルトンとして構成することでこれを実現できます。

于 2016-09-20T04:04:58.013 に答える