Maison >Java >javaDidacticiel >Comment résoudre les erreurs de compilation lors de l'utilisation conjointe de MapStruct et Lombok en Java ?

Comment résoudre les erreurs de compilation lors de l'utilisation conjointe de MapStruct et Lombok en Java ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-06 21:06:16981parcourir

How to Resolve Compilation Errors When Using MapStruct and Lombok Together in 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 :

  • Assurez-vous que vous utilisez des versions de MapStruct et Lombok. Les dernières versions de MapStruct et Lombok sont toujours recommandées.
  • Assurez-vous que le plugin de traitement des annotations pour Lombok est activé dans votre IDE.
  • Si vous utilisez Maven, vous devrez peut-être ajouter le Classe LombokProcessorConfig à votre chemin de classe. Cela peut être fait en ajoutant la dépendance suivante à votre fichier pom.xml :
<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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn