我已经在 ModelMapper 转换中成功使用了提供程序,但我偶然发现了一个奇怪的情况。我注意到 Provider 仅被考虑用于转换的“第一级”之外的对象,例如:我有两个层次结构:第一个)TipoConsultarProcessoResposta、TipoProcessoJudicial 和 TipoDocumento 第二个)ConsultarProcessoResposta、ProcessoJudicial 和 Documento TipoConsultarProcessoResposta 有一个 TipoProcessoJudicial依次有一个 TipoDocumento 列表,第二个层次结构类似于第一个层次结构。我正在从第一个层次结构转换到第二个层次结构,并且提供程序对于从 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 被调用但 ProcessoJudicalProvider 没有被调用。ModelMapper 尝试调用一个也失败的全局提供程序,并通过构造函数进行实例化。