Maison >Java >javaDidacticiel >Pourquoi MapStruct ne parvient-il pas à reconnaître les annotations @Getter et @Setter de Lombok, et comment puis-je y remédier ?
L'intégration de MapStruct et Lombok peut conduire à l'erreur « Propriété inconnue ... dans le type de résultat..." lors de l'utilisation des annotations @Getter et @Setter sur les classes d'entité et DTO ensemble. Cela se produit bien que les versions des deux bibliothèques soient compatibles.
Le problème se pose car Maven utilise exclusivement le processeur MapStruct, ignorant celui de Lombok. Pour résoudre ce problème :
Dans la configuration du plugin du compilateur Maven, ajoutez la dépendance Lombok à la liste annotationProcessorPaths :
<annotationProcessorPaths> <path> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>${org.projectlombok.version}</version> </path> ... </annotationProcessorPaths>
De plus, pour Lombok 1.18.16 et supérieur, ajoutez ce qui suit path :
<path> <groupId>org.projectlombok</groupId> <artifactId>lombok-mapstruct-binding</artifactId> <version>0.2.0</version> </path>
Vous pouvez également ajouter le processeur MapStruct en tant que dépendance et supprimer l'annotationProcessorPaths :
<dependencies> <dependency> <groupId>org.mapstruct</groupId> <artifactId>mapstruct-processor</artifactId> <version>${org.mapstruct.version}</version> </dependency> </dependencies>
REMARQUE : L'option 1 est recommandée pour garantir qu'aucune classe MapStruct interne n'est référencée dans le code.
Pour activer le traitement des annotations dans IntelliJ, ajoutez le processeur MapStruct en tant que dépendance fournie en raison du [problème IntelliJ IDEA-150621](https://youtrack.jetbrains.com /issue/IDEA-150621).
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!