O desenvolvedor Luís implementou a interface Java ProcessoAB. O ProcessoAB mapeia a conversão de objetos da classe ProcessoA em objetos da classe ProcessoB através da ferramenta MapStruct. O atributo “nome” do ProcessoA corresponde ao atributo “titulo” do ProcessoB. A fim de orientar o correto mapeamento entre atributos de nomes diferentes, Luís recorreu à anotação Java do MapStruct que torna explícitos os nomes dos atributos mapeados. Luís recorreu à anotação do MapStruct:
- A)Mapper;
@Mapper é a anotação que marca a interface do MapStruct como um mapper, mas não define o pareamento entre atributos de nomes diferentes.
- B)Mapping;
@Mapping é a anotação usada para indicar explicitamente a origem e o destino do campo, como source e target.
- C)AfterMapping;
@AfterMapping é usada para executar lógica depois do mapeamento, não para declarar correspondência entre atributos.
- D)MapperConfig;
@MapperConfig serve para centralizar configurações de mappers, mas não para mapear campos individuais.
- E)BeanMapping.
@BeanMapping permite ajustar opções gerais do mapeamento de um bean, mas não é a anotação específica para ligar dois atributos com nomes diferentes.
Gabarito: B
Quando o assunto é MapStruct, pense nele como um tradutor automático de objetos: ele pega um campo de uma classe e encaixa no campo da outra. O detalhe importante aqui é que nem sempre os nomes dos atributos são iguais, e aí você precisa deixar isso explícito para a ferramenta não “chutar”. No caso da questão, o atributo "nome" de ProcessoA deve virar "titulo" em ProcessoB. Para fazer esse mapeamento de um campo específico com nomes diferentes, o MapStruct usa a anotação @Mapping, normalmente dentro de um método anotado com @Mapper. É ela que permite dizer, de forma clara, qual origem vai para qual destino. Então o gabarito é a letra B. A lógica é simples: @Mapper marca a interface do mapper, mas quem declara o pareamento entre atributos é @Mapping. É o tipo de detalhe que a FGV adora cobrar, porque muita gente confunde a anotação da interface com a anotação do mapeamento em si. Em termos práticos, a ideia é algo como source = "nome" e target = "titulo". Sem isso, quando os nomes não coincidem, você deixa a ferramenta sem o mapa da mina.