LOMBOK AVEC SPRING BOOT

Programming · course

Browse all programmation documents

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