ModelMapper 変換で Provider を使用することに成功しましたが、奇妙な状況に遭遇しました。プロバイダーは、変換の「第 1 レベル」を超えたオブジェクトに対してのみ考慮されていることに気付きました。たとえば、次の 2 つの階層があります。1 番目) TipoConsultarProcessoResposta、TipoProcessoJudicial および TipoDocumentoこれには TipoDocumento のリストがあり、2 番目の階層は最初の階層に似ています。最初の階層から 2 番目の階層に変換しています。プロバイダーは TipoDocumento から Documento への変換では正常に動作していますが、TipoProcessoJudicial から ProcessoJudicial への変換では無視されています。
コードの関連部分は次のとおりです。
modelMapper = new ModelMapper();
modelMapper.getConfiguration().setMatchingStrategy(STRICT);
modelMapper.addMappings(new DocumentoPropertyMap()).setProvider(documentoProvider);
modelMapper.addMappings(new ProcessoJudicialPropertyMap()).setProvider(processoJudicialProvider);
ConsultarProcessoResposta resposta = modelMapper.map(tipoConsultarProcessoResposta, ConsultarProcessoResposta.class);
DocumentoPropertyMap extends PropertyMap<TipoDocumento, Documento> and ProcessoJudicialPropertyMap extends PropertyMap<TipoProcessoJudicial, ProcessoJudicial>.
問題は、DocumentoProvider が呼び出されているが、ProcessoJudicialProvider が呼び出されていないことです。ModelMapper はグローバル プロバイダーを呼び出そうとしますが、これも失敗し、コンストラクターによるインスタンス化に頼ります。