MapStruct es un procesador de anotaciones de Java diseñado para generar asignadores de alto rendimiento y con seguridad de tipos para clases de beans Java, incluida la compatibilidad con registros Java 16+. Al automatizar la creación de asignaciones, MapStruct elimina la necesidad de una codificación manual tediosa y propensa a errores. El generador proporciona valores predeterminados sensatos y conversiones de tipos integradas, lo que le permite manejar asignaciones estándar sin esfuerzo y, al mismo tiempo, ofrece flexibilidad para configuraciones personalizadas o comportamientos de asignación especializados. Con una perfecta integración en proyectos Java modernos, MapStruct puede mapear entre beans convencionales, registros e incluso jerarquías complejas, lo que lo convierte en una herramienta adaptable para diversas aplicaciones Java.
En comparación con los marcos de mapeo que funcionan en tiempo de ejecución, MapStruct ofrece las siguientes ventajas:
Para crear un mapeo entre dos tipos, declare una interfaz de mapeador como esta:
@ Mapper
public interface CarMapper {
CarMapper INSTANCE = Mappers . getMapper ( CarMapper . class );
@ Mapping ( target = "seatCount" , source = "numberOfSeats" )
CarDto carToCarDto ( Car car );
}
En el momento de la compilación, MapStruct generará una implementación de esta interfaz. La implementación generada utiliza invocaciones de métodos Java simples para mapear entre los objetos de origen y de destino, es decir, no interviene ninguna reflexión. De forma predeterminada, las propiedades se asignan si tienen el mismo nombre en origen y destino, pero puedes controlar este y muchos otros aspectos usando @Mapping
y algunas otras anotaciones.
MapStruct requiere Java 1.8 o posterior.
MapStruct funciona en compilaciones de línea de comandos (javac simple, a través de Maven, Gradle, Ant, etc.) e IDE.
Para Eclipse, se está desarrollando un complemento dedicado (consulte https://github.com/mapstruct/mapstruct-eclipse). Va más allá de lo que es posible con un procesador de anotaciones, brindando asistencia de contenido para atributos de anotación, soluciones rápidas y más.
Para IntelliJ, el complemento está disponible en el mercado de IntelliJ (consulte https://plugins.jetbrains.com/plugin/10036-mapstruct-support).
Para proyectos basados en Maven, agregue lo siguiente a su archivo POM para poder usar MapStruct (las dependencias están disponibles en 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, necesita algo como lo siguiente:
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
}
.. .
Si no trabaja con una herramienta de administración de dependencias, puede obtener un paquete de distribución en la página Lanzamientos.
Para obtener más información sobre MapStruct, consulte la página de inicio del proyecto. La documentación de referencia cubre en detalle todas las funciones proporcionadas. Si necesita ayuda, solicítela en las Discusiones.
MapStruct utiliza Maven para su construcción. Se requiere Java 11 para crear MapStruct desde el código fuente. Para construir el proyecto completo, ejecute
./mvnw clean install
desde la raíz del directorio del proyecto. Para omitir el módulo de distribución, ejecute
./mvnw clean install -DskipDistribution=true
MapStruct utiliza el procesador de anotaciones de gemas para generar gemas de mapeo para sus propias anotaciones. Por lo tanto, para una integración perfecta dentro de un IDE, es necesario habilitar el procesamiento de anotaciones.
Asegúrese de tener al menos IntelliJ 2018.2.x (necesario ya que la compatibilidad con annotationProcessors
del maven-compiler-plugin
es de esa versión). Habilite el procesamiento de anotaciones en IntelliJ (compilación, ejecución, implementación -> compilador -> procesadores de anotaciones)
Asegúrese de tener instalado el complemento m2e_apt.
MapStruct tiene la licencia Apache, versión 2.0 (la "Licencia"); No puede utilizar este proyecto excepto de conformidad con la Licencia. Puede obtener una copia de la Licencia en https://www.apache.org/licenses/LICENSE-2.0.