MapStruct ist ein Java-Annotationsprozessor, der zur Generierung typsicherer und leistungsstarker Mapper für Java-Bean-Klassen entwickelt wurde, einschließlich Unterstützung für Java 16+-Datensätze. Durch die Automatisierung der Zuordnungserstellung macht MapStruct eine mühsame und fehleranfällige manuelle Codierung überflüssig. Der Generator bietet sinnvolle Standardeinstellungen und integrierte Typkonvertierungen, sodass er Standardzuordnungen mühelos verarbeiten kann und gleichzeitig Flexibilität für benutzerdefinierte Konfigurationen oder spezielles Zuordnungsverhalten bietet. Durch die nahtlose Integration in moderne Java-Projekte kann MapStruct zwischen herkömmlichen Beans, Datensätzen und sogar komplexen Hierarchien abbilden, was es zu einem anpassungsfähigen Werkzeug für verschiedene Java-Anwendungen macht.
Im Vergleich zu zur Laufzeit arbeitenden Mapping-Frameworks bietet MapStruct folgende Vorteile:
Um eine Zuordnung zwischen zwei Typen zu erstellen, deklarieren Sie eine Mapper-Schnittstelle wie folgt:
@ Mapper
public interface CarMapper {
CarMapper INSTANCE = Mappers . getMapper ( CarMapper . class );
@ Mapping ( target = "seatCount" , source = "numberOfSeats" )
CarDto carToCarDto ( Car car );
}
Zur Kompilierzeit generiert MapStruct eine Implementierung dieser Schnittstelle. Die generierte Implementierung verwendet einfache Java-Methodenaufrufe für die Zuordnung zwischen Quell- und Zielobjekten, dh es ist keine Reflexion beteiligt. Standardmäßig werden Eigenschaften zugeordnet, wenn sie in Quelle und Ziel denselben Namen haben. Sie können diesen und viele andere Aspekte jedoch mithilfe von @Mapping
und einigen anderen Anmerkungen steuern.
MapStruct erfordert Java 1.8 oder höher.
MapStruct funktioniert in Befehlszeilen-Builds (einfaches Javac, über Maven, Gradle, Ant usw.) und IDEs.
Für Eclipse befindet sich ein spezielles Plug-in in der Entwicklung (siehe https://github.com/mapstruct/mapstruct-eclipse). Es geht über das hinaus, was mit einem Anmerkungsprozessor möglich ist, und bietet Inhaltsunterstützung für Anmerkungsattribute, schnelle Lösungen und mehr.
Für IntelliJ ist das Plug-in auf dem IntelliJ-Marktplatz verfügbar (siehe https://plugins.jetbrains.com/plugin/10036-mapstruct-support).
Fügen Sie für Maven-basierte Projekte Folgendes zu Ihrer POM-Datei hinzu, um MapStruct zu verwenden (die Abhängigkeiten sind bei Maven Central verfügbar):
...
< 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 >
...
Für Gradle benötigen Sie etwas in der Art:
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
}
.. .
Wenn Sie nicht mit einem Tool zur Abhängigkeitsverwaltung arbeiten, können Sie auf der Seite „Releases“ ein Distributionspaket erhalten.
Weitere Informationen zu MapStruct finden Sie auf der Projekthomepage. Die Referenzdokumentation deckt alle bereitgestellten Funktionen im Detail ab. Wenn Sie Hilfe benötigen, stellen Sie diese bitte in den Diskussionen.
MapStruct verwendet Maven für seinen Build. Für die Erstellung von MapStruct aus dem Quellcode ist Java 11 erforderlich. Führen Sie Folgendes aus, um das vollständige Projekt zu erstellen
./mvnw clean install
aus dem Stammverzeichnis des Projektverzeichnisses. Um das Verteilungsmodul zu überspringen, führen Sie Folgendes aus:
./mvnw clean install -DskipDistribution=true
MapStruct verwendet den Gem-Annotation-Prozessor, um Mapping-Gems für seine eigenen Annotationen zu generieren. Daher muss für eine nahtlose Integration in eine IDE die Annotationsverarbeitung aktiviert sein.
Stellen Sie sicher, dass Sie mindestens IntelliJ 2018.2.x haben (erforderlich, da die Unterstützung für annotationProcessors
vom maven-compiler-plugin
ab dieser Version erfolgt). Annotationsverarbeitung in IntelliJ aktivieren (Build, Execution, Deployment -> Compiler -> Annotation Processors)
Stellen Sie sicher, dass Sie das m2e_apt-Plugin installiert haben.
MapStruct ist unter der Apache-Lizenz, Version 2.0 (die „Lizenz“); lizenziert. Sie dürfen dieses Projekt nur in Übereinstimmung mit der Lizenz verwenden. Sie können eine Kopie der Lizenz unter https://www.apache.org/licenses/LICENSE-2.0 erhalten.