J'ai utilisé l'annotation @Data
dans ma classe POJO mais les getters et les setters ne sont pas générés.
//User POJO Class
import lombok.Data;
@Data
public class UserVo {
private String name;
private String userName;
private String email;
private String mobile;
private String password;
}
<!-- pom.xml -->
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.Apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.Apache.org/POM/4.0.0 http://maven.Apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.aptitest</groupId>
<artifactId>wt-online-test-backend</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>wt-online-test-backend</name>
<description>Online Aptitude Test</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.3.2.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<Java.version>1.8</Java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-jpa</artifactId>
<version>1.9.2.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.6</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.session</groupId>
<artifactId>spring-session</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.restdocs</groupId>
<artifactId>spring-restdocs-mockmvc</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
Le problème ici est probablement lié à votre capacité à vérifier si des getters/setters ont bien été générés.
Si votre IDE vous indique que les getters/setters ne sont pas générés - le IDE est peut-être incorrect. Il peut ne pas choisir que des getters/setters ont été générés; Pour votre IDE - assurez-vous d’avoir les plugins pertinents pour cela. Ceci est probablement votre problème car vous mentionnez STS . Essayez l'un des liens pertinents pour votre cas:
Utilisez la construction Maven indépendante de l'IDE pour vous assurer que Lombok génère ce qu'il est censé générer.
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
Tout d'abord, vous n'avez pas besoin d'ajouter @Setter et @Getter. @Data inclut ces deux.
Deuxièmement, vous devez ajouter le plug-in Lombok à votre IDE (recherchez le plug-in Lombok pour STS ou l'activation du processeur Annotation pour STS). Lorsque vous le faites, vous ne voyez pas vraiment les getters et les setters générés dans votre IDE. Cela vous aidera à résoudre les erreurs de compilation dans votre IDE. c'est tout.
Lombok est un processeur d'annotation - il dispose d'un accès complet à l'arbre source généré. Alors que les processeurs d'annotation génèrent généralement de nouveaux fichiers source, Lombok modifie ceux existants en ajoutant de nouveaux champs ou méthodes.
Lombok fournit de nombreuses annotations. (Voir Liste complète )
Pour répondre à la question: les annotations de Lombok ne génèrent pas le code en temps de développement. Cela se produit uniquement lorsque le compilateur Java génère un arbre source abstrait. Donc, ne vous attendez pas à ce que le code change comme par magie lorsque vous ajoutez une annotation.
Cependant, vous devez les résoudre dans votre IDE spécifique afin que toutes les dépendances et les importations soient correctement ajoutées. Vous trouverez ci-dessous les moyens de résoudre les annotations de Lombok dans votre environnement de développement préféré. Vous pouvez également choisir un projet Maven et le résoudre également ( Projet Lombok Maven repository ).
Idée IntelliJ
1) Activer le traitement des annotations
Fichier -> Paramètres -> Construire, Exécution, Déploiement -> Compilateur -> Processeurs d'annotation -> (Cochez la case correspondant à l'image donnée Ci-dessous)
2) Installer/Mettre à jour le plugin Lombok ( voir ceci )
Fichier -> Paramètres -> Plugins -> Rechercher un plugin Lombok -> Mettre à jour ou Installer
Éclipse
Suivez ces étapes dans ce lien .
Vous devez également ajouter Lombok aus en tant qu’agent à votre IDE. Voir https://projectlombok.org/download.html pour plus de détails.
Dans mon cas, la classe générée avait lombok généré des getters/setters sur ma classe d'entité. Mais je continuais à obtenir des valeurs nulles liées pour tous les champs de mon entité, à l'exception du champ @Id. J'utilise gradle not maven.
Pour moi, le problème a été d'installer le plug-in Lombok dans IntelliJ CE IDE et d'activer le traitement des annotations pour le projet IDE /.
Après cela je suis capable de persister mon entité très bien!
Spring Tool Suite IDE est basé sur Eclipse.
De la documentation officielle de Lombok: https://projectlombok.org/download.html
Eclipse et variantes - Exécutez lombok.jar en tant qu’application Java (double-cliquez dessus, généralement) pour l’installer. Ajoutez également lombok.jar à votre projet. Variantes prises en charge: Suite d'outils Springsource, JBoss Developer Studio
Si cela ne fonctionne toujours pas, cette discussion sur le dépassement de capacité peut vous aider: