LOMBOK AVEC SPRING BOOT
Project Lombok
UP ASI
Bureau E204
© 2021-2022 – ESPRIT – Module Architecture des SI II (Spring) LOMBOK
1
PLAN DU COURS
– Introduction
– Fonctionnement Lombok
– Installation
– Les annotations du projet Lombok
– Place au pratique
© 2021-2022 – ESPRIT – Module Architecture des SI II (Spring) LOMBOK
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
© 2021-2022 – ESPRIT – Module Architecture des SI II (Spring) LOMBOK
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.
© 2021-2022 – ESPRIT – Module Architecture des SI II (Spring) LOMBOK
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>
•
Il suffit après de faire un clean install et maven update de votre
projet
© 2021-2022 – ESPRIT – Module Architecture des SI II (Spring) LOMBOK
5
INSTALLATION - PLUGIN
• Pour utiliser le projet lombok avec STS, il faut installer un plugin :
Remarque: il faut fermer STS avant de procéder à l’installation.
Aller vers le fichier .jar de lombok qui est situé dans
~/.m2/repository/org/projectlombok/lombok/version.x
Advertisement
© 2021-2022 – ESPRIT – Module Architecture des SI II (Spring) LOMBOK
6
INSTALLATION - PLUGIN
Lancer la cmd et exécuter la commande
java -jar lombok-x.x.x.jar
Appuyer sur « Specify location … »
© 2021-2022 – ESPRIT – Module Architecture des SI II (Spring) LOMBOK
7
INSTALLATION - PLUGIN
Allez vers l’emplacement de STS.
© 2021-2022 – ESPRIT – Module Architecture des SI II (Spring) LOMBOK
8
INSTALLATION - PLUGIN
Pointer sur STS
Appuyer sur « Install / Update»
© 2021-2022 – ESPRIT – Module Architecture des SI II (Spring) LOMBOK
9
INSTALLATION - PLUGIN
Appuyer sur « Quit Installer »
© 2021-2022 – ESPRIT – Module Architecture des SI II (Spring) LOMBOK
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.
© 2021-2022 – ESPRIT – Module Architecture des SI II (Spring) LOMBOK
11
LES ANNOTATIONS DU PROJET LOMBOK - CONSTRUCTEURS
• @NoArgsConstructor permet la génération de constructeur par
défaut.
© 2021-2022 – ESPRIT – Module Architecture des SI II (Spring) LOMBOK
12
LES ANNOTATIONS DU PROJET LOMBOK - CONSTRUCTEURS
• @AllArgsConstructor génére un constructeur avec
tous
les
attributs.
© 2021-2022 – ESPRIT – Module Architecture des SI II (Spring) LOMBOK
13
LES ANNOTATIONS DU PROJET LOMBOK - CONSTRUCTEURS
• @RequiredArgsConstructor définit un constructeur avec seulement
les attributs non nuls (@NotNull).
© 2021-2022 – ESPRIT – Module Architecture des SI II (Spring) LOMBOK
14
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é.
© 2021-2022 – ESPRIT – Module Architecture des SI II (Spring) LOMBOK
15
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.
Advertisement
© 2021-2022 – ESPRIT – Module Architecture des SI II (Spring) LOMBOK
16
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,
@RequiredArgsConstructor pour une utilisation plus simple de Lombok.
© 2021-2022 – ESPRIT – Module Architecture des SI II (Spring) LOMBOK
17
LES ANNOTATIONS DU PROJET LOMBOK - MODIFICATEURS D'ACCÈS
• Pour modifier l’accès à l’attribut, on ajoute l’annotation suivante:
@FieldDefaults(level = <Format>)
© 2021-2022 – ESPRIT – Module Architecture des SI II (Spring) LOMBOK
18
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
des messages
Mettre en forme
les messages
© 2021-2022 – ESPRIT – Module Architecture des SI II (Spring) LOMBOK
19
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és à chacun des appenders.
• Le layout permet de définir le format du message de log. Il
admet un format par défaut fournit par la bibliothèque.
© 2021-2022 – ESPRIT – Module Architecture des SI II (Spring) LOMBOK
20
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
© 2021-2022 – ESPRIT – Module Architecture des SI II (Spring) LOMBOK
21
LES ANNOTATIONS DU PROJET LOMBOK – LOGGER : NIVEAUX DE LOG
© 2021-2022 – ESPRIT – Module Architecture des SI II (Spring) LOMBOK
22
Advertisement
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 {
//...
}
© 2021-2022 – ESPRIT – Module Architecture des SI II (Spring) LOMBOK
23
LES ANNOTATIONS DU PROJET LOMBOK – LOGGER : MISE EN OEUVRE
© 2021-2022 – ESPRIT – Module Architecture des SI II (Spring) LOMBOK
24
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 notre application.
logging.file= <path>
Exp : logging.file=D:/spring_log_file.log
• Pour spécifier la taille maximale du fichier de journalisation dans un
projet Spring Boot, il suffit d'ajouter cette instruction dans le fichier
application.properties de notre application.
logging.file.max-size= <taille>
Exp : logging.file.max-size= 100KB
© 2021-2022 – ESPRIT – Module Architecture des SI II (Spring) LOMBOK
25
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
%C
%d
%m ou %msg
%n
Rôle
Le nom de la classe qui a émis le message
Le timestamp de l'émission du message
Le message
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)
© 2021-2022 – ESPRIT – Module Architecture des SI II (Spring) LOMBOK
26
LES ANNOTATIONS DU PROJET LOMBOK – LOGGER : MISE EN OEUVRE
Advertisement
• 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
© 2021-2022 – ESPRIT – Module Architecture des SI II (Spring) LOMBOK
27
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
© 2021-2022 – ESPRIT – Module Architecture des SI II (Spring) LOMBOK
28
application.properties
………………..
#logging configuration
//Spécifier le fichier externe ou les messages sont stockés
logging.file=D:/spring_log_file.log
// Spécifier la taille maximale du fichier de journalisation
logging.file.max-size= 100KB
// spécifier le niveau de Log
logging.level.root=INFO
// Spécifier la forme du message
logging.pattern.console=%d{yyyy-MM-dd HH:mm:ss} - %-5level - %logger{36} - %msg%n
© 2021-2022 – ESPRIT – Module Architecture des SI II (Spring) LOMBOK
29
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
© 2021-2022 – ESPRIT – Module Architecture des SI II (Spring) LOMBOK
30
LOMBOK AVEC SPRING BOOT
Si vous avez des questions, n’hésitez pas à nous
contacter :
Département Informatique
UP ASI
Bureau E204
© 2021-2022 – ESPRIT – Module Architecture des SI II (Spring) LOMBOK
31