MapStruct est un processeur d'annotation Java conçu pour générer des mappeurs de type sécurisé et hautes performances pour les classes de bean Java, y compris la prise en charge des enregistrements Java 16+. En automatisant la création de mappages, MapStruct élimine le besoin d'un codage manuel fastidieux et sujet aux erreurs. Le générateur fournit des valeurs par défaut sensibles et des conversions de types intégrées, lui permettant de gérer sans effort les mappages standard, tout en offrant également une flexibilité pour les configurations personnalisées ou les comportements de mappage spécialisés. Grâce à une intégration transparente dans les projets Java modernes, MapStruct peut effectuer une cartographie entre les beans conventionnels, les enregistrements et même les hiérarchies complexes, ce qui en fait un outil adaptable à diverses applications Java.
Par rapport aux frameworks de cartographie fonctionnant au moment de l'exécution, MapStruct offre les avantages suivants :
Pour créer un mappage entre deux types, déclarez une interface de mappeur comme celle-ci :
@ Mapper
public interface CarMapper {
CarMapper INSTANCE = Mappers . getMapper ( CarMapper . class );
@ Mapping ( target = "seatCount" , source = "numberOfSeats" )
CarDto carToCarDto ( Car car );
}
Au moment de la compilation, MapStruct générera une implémentation de cette interface. L'implémentation générée utilise des invocations de méthodes Java simples pour le mappage entre les objets source et cible, c'est-à-dire qu'aucune réflexion n'est impliquée. Par défaut, les propriétés sont mappées si elles portent le même nom dans la source et la cible, mais vous pouvez contrôler cela et bien d'autres aspects à l'aide @Mapping
et d'une poignée d'autres annotations.
MapStruct nécessite Java 1.8 ou version ultérieure.
MapStruct fonctionne dans les versions en ligne de commande (javac simple, via Maven, Gradle, Ant, etc.) et les IDE.
Pour Eclipse, un plug-in dédié est en développement (voir https://github.com/mapstruct/mapstruct-eclipse). Il va au-delà de ce qui est possible avec un processeur d'annotations, en fournissant une assistance au contenu pour les attributs d'annotation, des correctifs rapides et bien plus encore.
Pour IntelliJ, le plug-in est disponible sur le marché IntelliJ (voir https://plugins.jetbrains.com/plugin/10036-mapstruct-support).
Pour les projets basés sur Maven, ajoutez ce qui suit à votre fichier POM afin d'utiliser MapStruct (les dépendances sont disponibles sur 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 >
...
Pour Gradle, vous avez besoin de quelque chose du genre :
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 vous ne travaillez pas avec un outil de gestion des dépendances, vous pouvez obtenir un bundle de distribution à partir de la page Releases.
Pour en savoir plus sur MapStruct, reportez-vous à la page d'accueil du projet. La documentation de référence couvre en détail toutes les fonctionnalités fournies. Si vous avez besoin d'aide, n'hésitez pas à la demander dans les discussions.
MapStruct utilise Maven pour sa construction. Java 11 est requis pour créer MapStruct à partir des sources. Pour construire le projet complet, exécutez
./mvnw clean install
à partir de la racine du répertoire du projet. Pour ignorer le module de distribution, exécutez
./mvnw clean install -DskipDistribution=true
MapStruct utilise le processeur d'annotations de gemmes pour générer des gemmes de mappage pour ses propres annotations. Par conséquent, pour une intégration transparente dans un IDE, le traitement des annotations doit être activé.
Assurez-vous d'avoir au moins IntelliJ 2018.2.x (nécessaire car la prise en charge des annotationProcessors
du maven-compiler-plugin
provient de cette version). Activer le traitement des annotations dans IntelliJ (Build, Execution, Deployment -> Compiler -> Annotation Processors)
Assurez-vous que le plugin m2e_apt est installé.
MapStruct est sous licence Apache, version 2.0 (la « Licence ») ; vous ne pouvez pas utiliser ce projet sauf en conformité avec la licence. Vous pouvez obtenir une copie de la licence sur https://www.apache.org/licenses/LICENSE-2.0.