Maison >Java >javaDidacticiel >Comment résoudre les erreurs de compilation lors de l'utilisation conjointe de MapStruct et Lombok en Java ?
MapStruct et Lombok sont deux bibliothèques Java populaires qui peuvent être utilisées pour améliorer la productivité et la maintenabilité du code Java. Cependant, lorsqu’ils sont utilisés ensemble, ils peuvent parfois conduire à des erreurs de compilation dues à des conflits dans le traitement de leurs annotations. Cet article fournira une solution à ce problème et expliquera comment configurer correctement MapStruct et Lombok pour qu'ils fonctionnent ensemble de manière transparente.
Le problème
Lorsque MapStruct et Lombok sont utilisés ensemble , le processus de compilation peut échouer avec un message d'erreur similaire au suivant :
Unknown property "id" in result type com.vg.once.dto.OneDto. Did you mean "null"?
Cette erreur se produit car MapStruct s'attend à trouve des getters et des setters pour les propriétés de la classe DTO, mais Lombok génère à la place des accesseurs et des mutateurs synthétiques. Par conséquent, MapStruct est incapable de mapper les propriétés de la classe d'entité aux propriétés correspondantes dans la classe DTO.
La solution
Pour résoudre ce problème, vous devez dire à MapStruct d'utiliser les accesseurs et mutateurs synthétiques de Lombok. Cela peut être fait en ajoutant l'annotation suivante à l'interface Mapper :
@Mapper(config = LombokProcessorConfig.class)
La classe LombokProcessorConfig est une classe de configuration MapStruct intégrée qui indique à MapStruct d'utiliser les accesseurs et mutateurs synthétiques de Lombok.
Exemple
Voici un exemple de Mapper interface qui utilise les accesseurs et mutateurs synthétiques de Lombok :
@Mapper(config = LombokProcessorConfig.class) public interface OneMapper { @Mapping(target="id", source="one.id") OneDto createOne (One one); }
Considérations supplémentaires
En plus de l'ajout de l'annotation LombokProcessorConfig, vous devez prendre en compte quelques autres éléments lorsque vous utilisez MapStruct et Lombok ensemble :
<dependency> <groupId>org.mapstruct</groupId> <artifactId>mapstruct-processor</artifactId> <version>${mapstruct.version}</version> <classifier>ap</classifier> </dependency>
Conclusion
En suivant ces étapes, vous pouvez utiliser MapStruct et Lombok ensemble pour améliorer la productivité et la maintenabilité de votre code Java.
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!