MapStruct é um processador de anotação Java projetado para gerar mapeadores de alto desempenho e com segurança de tipo para classes de bean Java, incluindo suporte para registros Java 16+. Ao automatizar a criação de mapeamentos, o MapStruct elimina a necessidade de codificação manual tediosa e propensa a erros. O gerador fornece padrões sensatos e conversões de tipo integradas, permitindo lidar com mapeamentos padrão sem esforço, ao mesmo tempo que oferece flexibilidade para configurações personalizadas ou comportamentos de mapeamento especializados. Com integração perfeita em projetos Java modernos, o MapStruct pode mapear entre beans convencionais, registros e até mesmo hierarquias complexas, tornando-o uma ferramenta adaptável para diversas aplicações Java.
Comparado às estruturas de mapeamento que funcionam em tempo de execução, o MapStruct oferece as seguintes vantagens:
Para criar um mapeamento entre dois tipos, declare uma interface mapeadora como esta:
@ Mapper
public interface CarMapper {
CarMapper INSTANCE = Mappers . getMapper ( CarMapper . class );
@ Mapping ( target = "seatCount" , source = "numberOfSeats" )
CarDto carToCarDto ( Car car );
}
Em tempo de compilação, o MapStruct irá gerar uma implementação desta interface. A implementação gerada utiliza invocações de métodos Java simples para mapeamento entre objetos de origem e de destino, ou seja, nenhuma reflexão está envolvida. Por padrão, as propriedades são mapeadas se tiverem o mesmo nome na origem e no destino, mas você pode controlar esse e muitos outros aspectos usando @Mapping
e algumas outras anotações.
MapStruct requer Java 1.8 ou posterior.
MapStruct funciona em compilações de linha de comando (javac simples, via Maven, Gradle, Ant, etc.) e IDEs.
Para Eclipse, um plug-in dedicado está em desenvolvimento (consulte https://github.com/mapstruct/mapstruct-eclipse). Ele vai além do que é possível com um processador de anotações, fornecendo assistência de conteúdo para atributos de anotações, correções rápidas e muito mais.
Para o IntelliJ, o plug-in está disponível no mercado IntelliJ (consulte https://plugins.jetbrains.com/plugin/10036-mapstruct-support).
Para projetos baseados em Maven, adicione o seguinte ao seu arquivo POM para usar o MapStruct (as dependências estão disponíveis no Maven Central):
...
< properties >
< org .mapstruct.version>1.6.3</ org .mapstruct.version>
</ properties >
...
< dependencies >
< dependency >
< groupId >org.mapstruct</ groupId >
< artifactId >mapstruct</ artifactId >
< version >${org.mapstruct.version}</ version >
</ dependency >
</ dependencies >
...
< build >
< plugins >
< plugin >
< groupId >org.apache.maven.plugins</ groupId >
< artifactId >maven-compiler-plugin</ artifactId >
< version >3.13.0</ version >
< configuration >
< source >17</ source >
< target >17</ target >
< annotationProcessorPaths >
< path >
< groupId >org.mapstruct</ groupId >
< artifactId >mapstruct-processor</ artifactId >
< version >${org.mapstruct.version}</ version >
</ path >
</ annotationProcessorPaths >
</ configuration >
</ plugin >
</ plugins >
</ build >
...
Para Gradle, você precisa de algo como o seguinte:
plugins {
.. .
id " com.diffplug.eclipse.apt " version " 3.26.0 " // Only for Eclipse
}
dependencies {
.. .
implementation ' org.mapstruct:mapstruct:1.6.3 '
annotationProcessor ' org.mapstruct:mapstruct-processor:1.6.3 '
testAnnotationProcessor ' org.mapstruct:mapstruct-processor:1.6.3 ' // if you are using mapstruct in test code
}
.. .
Se você não trabalha com uma ferramenta de gerenciamento de dependências, você pode obter um pacote de distribuição na página Releases.
Para saber mais sobre MapStruct, consulte a página inicial do projeto. A documentação de referência cobre detalhadamente todas as funcionalidades fornecidas. Se precisar de ajuda, pergunte nas discussões.
MapStruct usa Maven para sua construção. Java 11 é necessário para construir MapStruct a partir do código-fonte. Para construir o projeto completo, execute
./mvnw clean install
da raiz do diretório do projeto. Para pular o módulo de distribuição, execute
./mvnw clean install -DskipDistribution=true
MapStruct usa o processador de anotação de gemas para gerar gemas de mapeamento para suas próprias anotações. Portanto, para uma integração perfeita em um IDE, o processamento de anotações precisa ser habilitado.
Certifique-se de ter pelo menos o IntelliJ 2018.2.x (necessário, pois o suporte para annotationProcessors
do maven-compiler-plugin
é dessa versão). Habilite o processamento de anotações no IntelliJ (Build, Execution, Deployment -> Compiler -> Annotation Processors)
Certifique-se de ter o plugin m2e_apt instalado.
MapStruct é licenciado sob a Licença Apache, Versão 2.0 (a "Licença"); você não pode usar este projeto exceto em conformidade com a Licença. Você pode obter uma cópia da Licença em https://www.apache.org/licenses/LICENSE-2.0.