Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

3+10 - Lombok

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 33

LOMBOK AVEC SPRING BOOT

Project Lombok

UP ASI
Bureau E204

© 2022-2023 – ESPRIT – Module Architecture des SI II (Spring) 1


PLAN DU COURS

– Introduction

– Fonctionnement Lombok

– Installation

– Les annotations du projet Lombok

– Place au pratique

© 2022-2023 – ESPRIT – Module Architecture des SI II (Spring) 2


INTRODUCTION

• Le projet Lombok est une bibliothèque Java qui génère du code


en respectant de nombreuses bonnes pratiques.

• Cette bibliothèque remplace le code par des annotations faciles


à utiliser ce qu'on appelle du « boiler plate » :
✔Getters, Setters et Constructeurs ( vides et avec paramètres)
✔Equals et HashCode

✔To String

✔Modificateurs d'accès (private, protected, etc.)

✔Logger

© 2022-2023 – ESPRIT – Module Architecture des SI II (Spring) 3


FONCTIONNEMENT LOMBOK

• Lombok est un processeur d'annotation, qui fonctionne au


moment de la compilation pour ajouter des codes dans les
classes.

• Lorsque on utilise cette bibliothèque, pendant la compilation, le


compilateur donne au processeur d'annotation Lombok la
possibilité d'ajouter tout ce qui doit être ajouté à l'intérieur de la
classe. Donc il ajoute ce qui suit dans la classe.

© 2022-2023 – ESPRIT – Module Architecture des SI II (Spring) 4


INSTALLATION – DÉPENDANCE

• Pour intégrer Lombok dans un projet Spring Boot, il suffit juste


d’importer la dépendance dans le fichier POM.xml:

<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>

© 2022-2023 – ESPRIT – Module Architecture des SI II (Spring) 5


INSTALLATION - PLUGIN
• Pour utiliser le projet lombok avec Intellij, vérifier que le plugin est déjà installé (si
le plugin est déjà installé, alors aucune installation n’est nécessaire) :

✔ Aller vers File 🡪 Settings 🡪 Plugins 🡪 Installed

© 2022-2023 – ESPRIT – Module Architecture des SI II (Spring) 6


INSTALLATION - PLUGIN

• Si le plugin n’est pas installé, alors il faut l’installer :

✔ Aller vers File 🡪 Settings 🡪 Plugins 🡪 MarketPlace

© 2022-2023 – ESPRIT – Module Architecture des SI II (Spring) 7


INSTALLATION - PLUGIN

✔Chercher le plugin de « lombok » et cliquer sur « install »

© 2022-2023 – ESPRIT – Module Architecture des SI II (Spring) 8


INSTALLATION - PLUGIN

✔Finaliser l’installation et redémarrer l’IDE

© 2022-2023 – ESPRIT – Module Architecture des SI II (Spring) 9


INSTALLATION - PLUGIN

✔Résultat final

© 2022-2023 – ESPRIT – Module Architecture des SI II (Spring) 10


LES ANNOTATIONS DU PROJET LOMBOK - GETTERS ET SETTERS

• En ajoutant les annotations @Getter et @Setter, nous avons


demandé à Lombok de générer les getters et les setters pour tous
les attributs de la classe.

© 2022-2023 – ESPRIT – Module Architecture des SI II (Spring) 11


LES ANNOTATIONS DU PROJET LOMBOK - CONSTRUCTEURS

• @NoArgsConstructor permet la génération de constructeur par


défaut.

© 2022-2023 – ESPRIT – Module Architecture des SI II (Spring) 12


LES ANNOTATIONS DU PROJET LOMBOK - CONSTRUCTEURS

• @AllArgsConstructor généré un constructeur avec tous les


attributs.

© 2022-2023 – ESPRIT – Module Architecture des SI II (Spring) 13


LES ANNOTATIONS DU PROJET LOMBOK - CONSTRUCTEURS

• @RequiredArgsConstructor définit un constructeur avec


seulement les attributs non nuls (@NonNull).

© 2022-2023 – ESPRIT – Module Architecture des SI II (Spring) 14


LES ANNOTATIONS DU PROJET LOMBOK - BUILDER

• @Builder peut être utilisé pour définir les constructeurs paramétrés.

© 2022-2023 – ESPRIT – Module Architecture des SI II (Spring) 15


LES ANNOTATIONS DU PROJET LOMBOK - BUILDER

• PS: L’utilisation de l’annotation @Builder avec l’annotation @RequiredArgsConstructor,


peut engendrer des problèmes. Donc, pour définir les constructeurs, il faut utiliser une
seule méthode.

© 2022-2023 – ESPRIT – Module Architecture des SI II (Spring) 16


LES ANNOTATIONS DU PROJET LOMBOK – TO STRING

• @ToString génère une implémentation pour la méthode toString()


par défaut. Elle imprimera le nom de la classe, ainsi que chaque
champ, dans l'ordre, séparé par des virgules. Par défaut, les
champs non statiques sont exclus de toString() généré.

© 2022-2023 – ESPRIT – Module Architecture des SI II (Spring) 17


LES ANNOTATIONS DU PROJET LOMBOK - EQUALS ET HASHCODE

• Lorsque nous déclarons une classe avec @EqualsAndHashCode,


Lombok génère des implémentations pour les méthodes equals et
hashCode.

© 2022-2023 – ESPRIT – Module Architecture des SI II (Spring) 18


LES ANNOTATIONS DU PROJET LOMBOK - @DATA

• @Data est l’annotation qui regroupe @Getter, @Setter, @ToString,


@EqualsAndHashCode et @RequiredArgsConstructor.

PS : L’annotation @Data peut causer des problèmes lors de l’association des


entités ( manyToMany , OneToMany, etc…) engendrant une gestion assez
compliquée de ces sessions ( utilisation du terme exclude , etc…)
Pour votre projet, privilégier l’utilisation des annotations @Getter, @Setter, … pour
une utilisation plus simple de Lombok.
© 2022-2023 – ESPRIT – Module Architecture des SI II (Spring) 19
LES ANNOTATIONS DU PROJET LOMBOK - MODIFICATEURS D'ACCÈS

• Pour modifier l’accès à l’attribut, on ajoute l’annotation suivante:


@FieldDefaults(level = <Format>)

© 2022-2023 – ESPRIT – Module Architecture des SI II (Spring) 20


LES ANNOTATIONS DU PROJET LOMBOK – LOGGER : COMPOSITION

• Les bibliothèques de journalisation met trois sortes de


composants à disposition du programmeur :
les loggers, les appenders et les layouts.

Écrire les messages Choisir la destination Mettre en forme


des messages les messages

© 2022-2023 – ESPRIT – Module Architecture des SI II (Spring) 21


LES ANNOTATIONS DU PROJET LOMBOK – LOGGER : COMPOSITION

• L’appender désigne un flux qui représente le fichier de log et se


charge de l'envoie de message formaté à ce flux (Console ou
fichier de log).

• Un logger peut posséder plusieurs appenders. Si le logger


décide de traiter la demande de message, le message est
envoyé à chacun des appenders.

• Le layout permet de définir le format du message de log. Il


admet un format par défaut fourni par la bibliothèque.

© 2022-2023 – ESPRIT – Module Architecture des SI II (Spring) 22


LES ANNOTATIONS DU PROJET LOMBOK – LOGGER : NIVEAUX DE LOG

• Le logging gère des priorités, ou Level, pour permettre au logger


de déterminer si le message sera envoyé dans le fichier de log (ou
la console). Il existe six priorités qui possèdent un ordre
hiérarchique croissant :

TRACE DEBUG INFO WARN ERROR FATAL

© 2022-2023 – ESPRIT – Module Architecture des SI II (Spring) 23


LES ANNOTATIONS DU PROJET LOMBOK – LOGGER : MISE EN OEUVRE

• En utilisant l’annotation @SLF4J (Simple Logging Facade for Java):


• On génère un logger de la classe annotée sans la déclaration de
la constante.
• L'annotation fournit une variable statique appelée « log » qui
fournit les utilitaires de journalisation par défaut

import org.springframework.stereotype.Service;
import lombok.extern.slf4j.Slf4j;

@Slf4j
@Service
public class DemoService {
//...
}

© 2022-2023 – ESPRIT – Module Architecture des SI II (Spring) 24


LES ANNOTATIONS DU PROJET LOMBOK – LOGGER : MISE EN OEUVRE

© 2022-2023 – ESPRIT – Module Architecture des SI II (Spring) 25


LES ANNOTATIONS DU PROJET LOMBOK – LOGGER : MISE EN OEUVRE

• Pour spécifier le fichier externe où les messages sont stockés dans un projet
Spring Boot, il suffit d'ajouter cette instruction dans le fichier
application.properties de l’application:

logging.file.name= <path>
Exp : logging.file.name=D:/myinfo.log

• Pour personnaliser le nom du fichier, il suffit d’ajouter cette propriété dans le


fichier application.properties de l’application:
logging.logback.rollingpolicy.file-name-pattern= <Pattern>

Exp : logging.logback.rollingpolicy.file-name-pattern= D:/Spring/myinfo-

%d{yyyy-MM-dd}.%i.log
Date Incrémentation

© 2022-2023 – ESPRIT – Module Architecture des SI II (Spring) 26


LES ANNOTATIONS DU PROJET LOMBOK – LOGGER : MISE EN OEUVRE

• Pour spécifier un seuil pour la taille du fichier externe, il suffit


d'ajouter cette instruction dans le fichier application.properties de
l’application :
logging.logback.rollingpolicy.max-file-size= <taille>
Exp : logging.logback.rollingpolicy.max-file-size= 10KB

Cela maintient la taille maximale de chaque fichier externe autour


de 10 Ko. Un nouveau fichier sera créé si la taille du fichier actuel
dépasse ce nombre.
🡺 Si cette propriété n'est pas spécifiée, la taille par défaut est de 10 Mo.

© 2022-2023 – ESPRIT – Module Architecture des SI II (Spring)


LES ANNOTATIONS DU PROJET LOMBOK – LOGGER : MISE EN OEUVRE

• Pour personnaliser le message de log, il suffit d'ajouter cette


instruction dans le fichier application.properties
✔ Dans la console: logging.pattern.console= <Format>
✔ Dans le fichier: logging.pattern.file= <Format>
Exemple:
logging.pattern.file=%d{yyyy-MM-dd HH:mm:ss} - %-5level- %logger{36} - %msg %n

Motif Rôle
%C Le nom de la classe qui a émis le message
%d Le timestamp de l'émission du message
%m ou %msg Le message
%n Un retour chariot

%level Le niveau de log (info,debug, fatal ,etc..)

%logger Des informations sur l'origine du message dans le code source (package, classe, méthode)

© 2022-2023 – ESPRIT – Module Architecture des SI II (Spring) 28


LES ANNOTATIONS DU PROJET LOMBOK – LOGGER : MISE EN OEUVRE

• Les niveaux de journalisation peuvent être définis dans le projet


Spring Boot en définissant ses configurations dans le fichier
application.properties.
• Le format pour définir la configuration du niveau de
journalisation est :
logging.level.[classpath] = [level]
Exemple : logging.level.com.service.DemoService= WARN

© 2022-2023 – ESPRIT – Module Architecture des SI II (Spring) 29


LES ANNOTATIONS DU PROJET LOMBOK – LOGGER : MISE EN OEUVRE

• Pour spécifier un niveau de journalisation pour toutes les classes


qui n'ont pas leurs propres paramètres de niveau de
journalisation, le root logger peut être défini à l'aide de:
logging.level.root = [level]
Exemple : logging.level.root= DEBUG

© 2022-2023 – ESPRIT – Module Architecture des SI II (Spring) 30


PLACE A LA PRATIQUE

• Appliquer les annotations de ce cours sur le projet de l’étude de


cas pour générer:
✔ Les getters
✔ Les setters
✔ Les constructeurs
✔ La méthode « ToString »
✔ La journalisation

© 2022-2023 – ESPRIT – Module Architecture des SI II (Spring) 31


LES ANNOTATIONS DU PROJET LOMBOK – LOGGER : MISE EN OEUVRE

© 2022-2023 – ESPRIT – Module Architecture des SI II (Spring) 32


LOMBOK AVEC SPRING BOOT

Si vous avez des questions, n’hésitez pas à nous


contacter :

Département Informatique
UP ASI
Bureau E204

© 2022-2023 – ESPRIT – Module Architecture des SI II (Spring) 33

Vous aimerez peut-être aussi