Projet Lombok

Depuis que j’ai découvert lombok je dois avouer qu’il est devenu indispensable.

En effet lombok réduit considérablement le code répétitif que l’on rencontre généralement dans les class java POJO. Je parle évidement des constructeurs getters setters etc.

Pour vous donner un exemple voilà ce qu’on écrit généralement sur une class a 5 champs :

package akl.optional;

import java.util.Date;
import java.util.Objects;

public class User {
    private Long id;
    private String nom;
    private String prenom;
    private Date dateNaissance;
    private String adresse;

    public User() {
    }

    public User(Long id, String nom, String prenom, Date dateNaissance, String adresse) {
        this.id = id;
        this.nom = nom;
        this.prenom = prenom;
        this.dateNaissance = dateNaissance;
        this.adresse = adresse;
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getNom() {
        return nom;
    }

    public void setNom(String nom) {
        this.nom = nom;
    }

    public String getPrenom() {
        return prenom;
    }

    public void setPrenom(String prenom) {
        this.prenom = prenom;
    }

    public Date getDateNaissance() {
        return dateNaissance;
    }

    public void setDateNaissance(Date dateNaissance) {
        this.dateNaissance = dateNaissance;
    }

    public String getAdresse() {
        return adresse;
    }

    public void setAdresse(String adresse) {
        this.adresse = adresse;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        User user = (User) o;
        return Objects.equals(id, user.id) &&
                Objects.equals(nom, user.nom) &&
                Objects.equals(prenom, user.prenom) &&
                Objects.equals(dateNaissance, user.dateNaissance) &&
                Objects.equals(adresse, user.adresse);
    }

    @Override
    public int hashCode() {

        return Objects.hash(id, nom, prenom, dateNaissance, adresse);
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", nom='" + nom + '\'' +
                ", prenom='" + prenom + '\'' +
                ", dateNaissance=" + dateNaissance +
                ", adresse='" + adresse + '\'' +
                '}';
    }
}

Près de 100 ligne de code, il est vrai qu’avec les IDE cela ce fait assez rapidement, mais lombok fait mieux en utilisant les annotations nous pouvons faire tous cela en quelque annotation notre code devient donc plus concis:

Lombok_exempler

En ajoutant l’annotation « @Data » nous avons quasiment toutes les méthodes précédemment écrite à la main ou générer par l’IDE.

Voilà un petit résumé des annotations les plus utiliser:

« @Getter/@Setter » : génère les Getters et Setters
« @ToString » : Génère la méthode toString()
« @EqualsAndHashCode » : Génère les méthodes hashCode et l’implémentation equals pour les champs de notre objet..
« @NoArgsConstructor »: Génère un constructeur sans argument.
« @RequiredArgsConstructor »: Lombok génère le constructeur avec seulement les champs obligatoires
« @NonNull », sert a spécifié les champs obligatoires.
« @AllArgsConstructor » : Constructeur avec tous les champs.
« @Data » : équivalent aux annotations @ToString, @EqualsAndHashCode, @Getter sur tous les champs, et @Setter sur tous les champs non-final , et @RequiredArgsConstructor.

Utilisation de l’annotation Builder.
Dans cet exemple nous voulons utiliser un builder pour créer l’instance d’une class.


@Getter
@Builder
public class User {
    private final int id;
    private final String name;
}

//Utilisation du Builder
User user1 = User.builder()
  .name("AKL")
  .id(1)
  .build();
 
assertThat(user1.getName())
  .isEqualTo("AKL");
assertThat(user1.getId())
  .isEqualTo(1);

Je vous conseille vivement de parcourir la liste les fonctionnalités fourni par Lombok sur le site officiel. (https://projectlombok.org/)

Pour mettre en place Lombok il faut suivre quelques étapes:

récupérer le jar Lombok sur la page officiel et l’exécuter, le jar détecte l’ide et y ajoute le plugin Lombok, c’est aussi simple que ça.

Il faut tous de même ajouter Lombok au classpath on peut le faire soit manuellement en ajoutant la librairie, soit dans le pom.xml en ajoutant la dépendance maven:


         
        org.projectlombok
        lombok
        1.16.16
        provided
    
        

Dans le cas où vous travailler avec Intellij Idea il faut installer le plugin
Dans File > Settings > Plugins
Click sur Browse repositories…
Chercher le plugin Lombok
Install plugin
redémarré IntelliJ IDEA

Une réflexion sur “Projet Lombok

  1. […] Notre entité Article contient plus 100 lignes, ce qui n’est pas très pratique surtout que les champs d’audit devront être réécrits à chaque fois que l’on souhaite auditer une nouvelle entité. Utilisons une class abstraite contenant les champs d’audit et qui sera hérité par toute les entités que nous voulons auditer. Nous allons aussi utiliser le projet lombok pour écrire moins de code. (voir l’article traitant de lombok) […]

    J’aime

Laisser un commentaire