Vous êtes sur la page 1sur 21

03/05/2022

Spring Boot Qu’est-ce que c’est ?

Une technologie de développement d’application WEB


Chapitre (framework) qui dispense d’écrire du code Java dans les
interfaces

Spring Boot est un framework qui facilite le développement


d'applications fondées sur Spring en offrant des outils
permettant d'obtenir une application totalement autonome.
Spring Boot

2 3

Spring Boot Qu’est-ce que c’est ? Spring ?

Spring Boot peut s'expliquer simplement par l'illustration Votre application est bardée de fichiers XML qui indiquent les
suivante: configurations des servlets, des vues, des contenus statiques,
etc. Ces fichiers de configuration deviennent un vrai challenge
lorsque vous avez une application complexe.

Spring est un formidable outil quand on essaye de développer


une application web.
Il fournit des serveurs Il évite d'écrire
intégrés (Embedded HTTP plusieurs codes de
servers) comme Tomcat, configurations XML Néanmoins, un de leur plus gros problèmes est la configuration
Jetty

Comment Spring Boot permet-il de créer une application sans écrire


une seule ligne de configuration, ou presque ? 4 5
03/05/2022

Spring Boot Qu’est-ce que c’est ? Spring Boot Qu’est-ce que c’est ?

Les avantages de Spring Boot sont: Les avantages de Spring Boot sont:
Il est facile de développer l'application basée sur Spring avec Java. Il fournit des serveurs intégrés (Embedded HTTP servers) comme Tomcat,
Il diminue énormément le temps et augmente la productivité. Jetty .... afin de développer et de tester des applications web à la manière
Il évite d'écrire plusieurs codes d'expressions standard (boiler plate la plus facilement.
Code), des Annotations et des configurations XML. Il fournit l'outil CLI (Command Line Interface) afin de développer et de
Il est très facile d'intégrer des applications Spring Boot avec ses tester des applications Spring Boot à partir de l'invite de commande
écosystème de Spring comme Spring JDBC, Spring ORM, Spring Data, (command prompt) facilement et rapidement.
Spring Security, etc. Il fournit beaucoup de plugins afin de développer et de tester des
Il suit l'approche “Configuration par défaut” afin de diminuer le temps et applications Spring Boot rapidement en utilisant les outils de Build comme
l'effort de développement. Maven et Gradle
Il fournit beaucoup de plugins afin de travailler avec des serveurs intégrés
6 7
et la base de données stockées dans la mémoire facilement.

Maven : POM Spring Boot Qu’est-ce que c’est ?

Maven utilise un paradigme connu sous le nom de Project Object


Spring Boot propose 2 fonctionnalités principales pour simplifier
Model (POM) afin de décrire : la configuration:
Un projet logiciel,
L'auto-configuration,
Ses dépendances avec des modules externes,
Les starters
L’ordre à suivre pour sa production.

9
03/05/2022

L'auto-configuration de Spring Boot Les starters de Spring Boot

Cette fonctionnalité est la plus importante de Spring Boot. Les starters permettent de créer un "squelette" prêt à l'emploi très
rapidement. Les starters font gagner énormément de temps,
Elle permet de configurer automatiquement l’application à partir
notamment lorsqu'on commence le développement d'un Microservice.
des jar trouvés dans le Classpath.
Les starters permettent d'importer un ensemble de dépendances
Exemple: si des dépendances (Spring MVC, Hibernate, …) sont selon la nature de l'application à développer afin de démarrer
importés, Spring Boot consulte cette liste puis il produit la rapidement.
configuration nécessaire (appconfig-mvc.xml, web.xml, Les starters permettent la gestion des versions.
persitence.xml) pour que tout fonctionne correctement. On n’a plus besoin de chercher quelles versions sont compatibles puis de les

Voici la syntaxe de la configuration automatique avec Spring boot: ajouter une à une dans le pom.xml,
Il suffit d'ajouter une simple dépendance au starter de votre choix. Cette
@EnableAutoConfiguration dépendance va ajouter, à son tour, les éléments dont elle dépend, avec les
10 11
bonnes versions.

Les starters de Spring Boot Les starters de Spring Boot

Exemple: Pour créer un Microservice, on a besoin des dépendances Avec Spring Boot, vous allez tout simplement avoir une seule
suivantes: dépendance dans votre pom.xml :
Spring ; <dependency>
<groupId>org.springframework.boot</groupId>
Spring MVC ; <artifactId>spring-boot-starter-web</artifactId>
</dependency>
Jackson (pour json) ;
Tomcat ; Spring-boot-starter-web

...
Avec Spring Boot, vous allez tout simplement avoir une seule Spring-boot-starter Spring-web Spring-web-mvc Spring-boot-starter-tomcat
dépendance dans votre pom.xml :
<dependency> Tous les starters de Spring Boot
<groupId>org.springframework.boot</groupId> sont au format : Spring-boot- Spring-boot- Tomcat-embed- Tomcat-embed-
spring-boot-starter-nomdustarter Spring-boot-starter
<artifactId>spring-boot-starter-web</artifactId> autoconfigure starter-logging logging core
12 13
</dependency>
03/05/2022

Les starters de Spring Boot Les starters de Spring Boot

Ce starter va charger les dépendances présentes dans le pom Ce starter va charger les dépendances présentes dans le pom
suivant : suivant :
<?xml version="1.0" encoding="UTF-8"?>
<project <dependencies> <dependency>
<description>Starter for building web, including <groupId>com.fasterxml.jackson.core</groupId>
xmlns="http://maven.apache.org/POM/4.0.0" <dependency>
RESTful, applications using Spring <artifactId>jackson-databind</artifactId>
xmlns:xsi="http://www.w3.org/2001/XMLSchema <groupId>org.springframework.boot</groupId>
MVC. Uses Tomcat as the default embedded </dependency>
-instance" <artifactId>spring-boot-starter</artifactId>
container</description> <dependency>
xsi:schemaLocation="http://maven.apache.org/PO </dependency>
<url>http://projects.spring.io/spring-boot/</url> <groupId>org.springframework</groupId>
M/4.0.0 http://maven.apache.org/xsd/maven- <dependency>
<organization> <artifactId>spring-web</artifactId>
4.0.0.xsd"> <groupId>org.springframework.boot</groupId>
<name>Pivotal Software, Inc.</name> </dependency>
<modelVersion>4.0.0</modelVersion> <artifactId>spring-boot-starter-
<url>http://www.spring.io</url> <dependency>
<parent> tomcat</artifactId>
</organization> <groupId>org.springframework</groupId>
<groupId>org.springframework.boot</groupId> </dependency>
<properties> <artifactId>spring-webmvc</artifactId>
<artifactId>spring-boot-starters</artifactId> <dependency>
<main.basedir>${basedir}/../..</main.basedir> </dependency>
<version>1.5.9.RELEASE</version> <groupId>org.hibernate</groupId>
</properties> </dependencies>
</parent> <artifactId>hibernate-validator</artifactId>
<artifactId>spring-boot-starter-web</artifactId> </dependency> </project>
<name>Spring Boot Web Starter</name> 14 15

Les starters de Spring Boot Les starters de Spring Boot

comment il devine les versions ? Spring-boot-starter-web n'est pas le seul starter disponible. Selon
Il permet de définir ce que vous comptez développer, vous trouverez pratiquement
<?xml version="1.0" encoding="UTF-8"?> principalement :
<project toujours un starter adéquat. Voici quelques exemples :
xmlns="http://maven.apache.org/POM/4.0.0" La version de Java à utiliser.
xmlns:xsi="http://www.w3.org/2001/XMLSchema
Une liste complète des versions
spring-boot-starter-mail: pour les applications et services d'envoi
-instance"
xsi:schemaLocation="http://maven.apache.org/PO des dépendances prises en charge, de mails.
M/4.0.0 http://maven.apache.org/xsd/maven-
4.0.0.xsd"> ce qui permet d'ajouter des spring-boot-starter-thymeleaf: si vous souhaitez créer une
<modelVersion>4.0.0</modelVersion> dépendances sans indiquer leur
<parent> application qui offre une interface utilisateur en utilisant le
<groupId>org.springframework.boot</groupId> version comme dans le pom.xml du
<artifactId>spring-boot-starters</artifactId> starter spring-boot-starter-web vu
moteur de template thymeleaf.
<version>1.5.9.RELEASE</version>
</parent> précédemment. spring-boot-starter-web-services: pour les services plus
<artifactId>spring-boot-starter-web</artifactId>
classiques utilisant SOAP (Simple Object Access Protocol).
<name>Spring Boot Web Starter</name>
16 17
03/05/2022

Radiographie de Spring Boot Créez un Microservice grâce à Spring Boot

Spring initializr vous permet de composer votre application selon Tous les starters et ensembles de dépendances pour les cas d'usage les

vos besoins. plus courants (starter web, bases de données, les moteurs de template,
https://start.spring.io la sécurité, le messaging et autres outils très importants dans une
architecture Microservices) seront affichés.

18 19

Créez un Microservice grâce à Spring Boot Créez un Microservice grâce à Spring Boot

Développer un mini-système d'e-commerce fondé sur l'architecture Les étapes à suivre:


Microservices avec Spring Boot. 1. Sélectionnez le starter Web
Un Microservice qui gère les produits à vendre (ajouter, supprimer,
mettre à jour et afficher les produits).
Création et importation à partir de Spring Initializr:
Les Metadata du projet:
Group : com.ecommerce 2. Cliquez sur "Generate Project" et téléchargez l'application générée.
Artifact : microcommerce
3. Dans ce cours, nous allons utiliser comme IDE : IntelliJ.
Name : microcommerce
4. Procédez à l'extraction de l'application téléchargée
Packaging : jar
"microcommerce.zip".
Java Version : 8
20 21
03/05/2022

Créez un Microservice grâce à Spring Boot Créez un Microservice grâce à Spring Boot

Les étapes à suivre: Les étapes à suivre:


5. Une fois sur la page d'accueil d'IntelliJ, cliquez sur "Import 6. Sélectionnez le dossier de l'application microcommerce puis
Project": sélectionnez le pom.xml :

22 23

Créez un Microservice grâce à Spring Boot Créez un Microservice grâce à Spring Boot

Les étapes à suivre: Les étapes à suivre:


7. Ajouter SDK: 8. Analyse du code obtenu

Si vous venez d'installer IntelliJ, il vous demandera Si tout s'est déroulé


de choisir le JDK : cliquez sur "+" puis JDK : correctement, vous devriez avoir
Sélectionnez le répertoire de votre JDK : cette arborescence :

24 25
03/05/2022

Créez un Microservice grâce à Spring Boot Créez un Microservice grâce à Spring Boot

Les étapes à suivre: Les étapes à suivre:


9. Etudier en détail les différents éléments de cette arborescence 9. Etudier en détail les différents éléments de cette arborescence
Pom.xml Pom.xml

pom.xml hérite du parent spring-boot-starter-parent qui nous Nous avons sélectionné Java 8 dans l'interface de Spring Initializr,
permet de ne plus nous soucier des versions des dépendances et une balise XML <java.version> a été ajoutée dans la
de leur compatibilité. partie properties du fichier pom.xml.

26 27

Créez un Microservice grâce à Spring Boot Créez un Microservice grâce à Spring Boot

Les étapes à suivre: 9. Etudier en détail les différents éléments de cette arborescence
External librairies
9. Etudier en détail les différents éléments de cette arborescence
Pour voir la liste des dépendances importées, rendez-
Pom.xml
vous à gauche dans "External.
Vous avez dans cette liste principalement :
•Jackson : permet de parser JSON et faire le lien entre
les classes Java et le contenu JSON.
•Tomcat : intégré, va nous permettre de lancer notre
application en exécutant tout simplement le jar sans
avoir à le déployer dans un serveur d'application.
Le pom.xml définit ensuite une dépendance vers le starter qui va
•Hibernate : facilite la gestion des données.
ajouter à notre Microservice toutes les dépendances de base
28 29
nécessaires pour démarrer rapidement. •Logging grâce à logback et autres.
03/05/2022

Créez un Microservice grâce à Spring Boot Créez un Microservice grâce à Spring Boot

9. Etudier en détail les différents éléments de cette arborescence 9. Etudier en détail les différents éléments de cette arborescence
MicrocommerceApplication.java MicrocommerceApplication.java
Cette classe, générée automatiquement par Spring Boot, est le point de L'annotation @SpringBootApplication,
démarrage de l'application. Elle lance, entre autres, la classe qui est une simple encapsulation de
SpringApplication, responsable du démarrage de l'application Spring. Cette trois annotations:
classe va créer ApplicationContext dans lequel iront toutes les
configurations générées automatiquement ou ajoutées par vos soins. @Configuration : donne à la classe actuelle la possibilité de définir des
configurations qui iront remplacer les traditionnels fichiers XML. Ces
configurations se font via des Beans.
@EnableAutoConfiguration : l'annotation vue précédemment qui permet, au
démarrage de Spring, de générer automatiquement les configurations
nécessaires en fonction des dépendances situées dans notre classpath.
@ComponentScan : Indique qu'il faut scanner les classes de ce package afin de
30 31
trouver des Beans de configuration.

Créez un Microservice grâce à Spring Boot Créez un Microservice grâce à Spring Boot

9. Etudier en détail les différents éléments de cette arborescence 9. Etudier en détail les différents éléments de cette arborescence
MicrocommerceApplication.java application.properties

L'annotation @SpringBootApplication, qui est une simple encapsulation de trois


Ce fichier vous permet de modifier très
annotations: @Configuration, @EnableAutoConfiguration, @ComponentScan.
simplement un nombre impressionnant de
configurations liées à Spring Boot et ses
dépendances.
Par exemple : changer le port d'écoute de
Tomcat, l'emplacement des fichiers de log,
les paramètres d'envoi d'emails, etc...

32 33
03/05/2022

Créez un Microservice grâce à Spring Boot Créez un Microservice grâce à Spring Boot

9. Etudier en détail les différents éléments de cette arborescence 9. Etudier en détail les différents éléments de cette arborescence
MicrocommerceApplicationTests.java Exécuter l'application

Ce fichier vous permet d'écrire vos tests.


34 35

Créez un Microservice grâce à Spring Boot Créez un Microservice grâce à Spring Boot

9. Etudier en détail les différents éléments de cette arborescence Utilisation du navigateur pour visualiser le résultat: http://localhost:8080

Le retour de l’exécution:

?? On n’a encore pas fourni


d'éléments à afficher !

public class
package com.ecommerce.microcommerce; MicrocommerceApplication {
import @RequestMapping("/")
org.springframework.boot.SpringApplication; @ResponseBody
import String home() {
org.springframework.boot.autoconfigure.Spri return "Hello World!";
ngBootApplication; }
import public static void
org.springframework.stereotype.Controller; main(String[] args) {
import
org.springframework.web.bind.annotation.*; SpringApplication.run(Microcomme
@Controller rceApplication.class, args);
@SpringBootApplication }
36 } 37
03/05/2022

Créez un Microservice grâce à Spring Boot Créez un Microservice grâce à Spring Boot

Utilisation du navigateur pour visualiser le résultat: http://localhost:8080


@Controller: indique que la classe annotée est un contrôleur. Il est détecté
automatiquement via le balayage des chemins de classes. Il est généralement
public class
package com.ecommerce.microcommerce; MicrocommerceApplication { utilisé en combinaison avec des méthodes de gestionnaire annotées basées sur
import @RequestMapping("/") l'annotation @RequestMapping.
org.springframework.boot.SpringApplication; @ResponseBody
import String home() { @RequestBody and @ResponseBody: Ce sont des annotations du framework
org.springframework.boot.autoconfigure.Spri return "Hello World!";
spring MVC qui peuvent être utilisées dans un contrôleur pour mettre en œuvre la
ngBootApplication; }
import public static void sérialisation et la désérialisation d'objets intelligents.
org.springframework.stereotype.Controller; main(String[] args) {
import Si on utilise dans une méthode l’annotation @ResponseBody, spring essaiera de
org.springframework.web.bind.annotation.*; SpringApplication.run(Microcomme convertir sa valeur de retour et l'écrira automatiquement dans la réponse http.
@Controller rceApplication.class, args);
@SpringBootApplication }
}

38 39

Créez un Microservice grâce à Spring Boot Créez un Microservice grâce à Spring Boot

9. Etudier en détail les différents éléments de cette arborescence 9. Etudier en détail les différents éléments de cette arborescence
Personnalisation de l'auto-configuration de Spring Boot Personnalisation de l'auto-configuration de Spring Boot
Exemple: Si on veut changer le port du serveur. On ajoute tout simplement
La personnalisation de l'auto-configuration de Spring Boot se faire
cette ligne : server.port 9090
via application.properties.
On peut changer un nombre impressionnant de paramètres grâce à une
simple ligne dans le fichier application.properties.
Exemple: Si on veut changer le port du serveur. On ajoute tout simplement
cette ligne : server.port 9090

40 41
03/05/2022

Installer Spring Boot dans Eclipse Installer Spring Boot dans Eclipse
2 3 1 2 3
1

5
4 5
4

6 7

42 43

Installer Spring Boot dans Eclipse Créez un Microservice grâce à Spring Boot
Création de l'API REST

API (Application Programming Interface):


Interface ?
Exemple: une télécommande pour télévision
Cette interface comporte : un groupe de boutons et interrupteurs : boutons
pour changer de chaîne, bouton pour changer la source d’entrée, bouton pour
éteindre la télévision,
 Chaque bouton correspond à une action,

44 45
03/05/2022

Créez un Microservice grâce à Spring Boot Créez un Microservice grâce à Spring Boot
Création de l'API REST Construire sa propre API

API (Application Programming Interface): Lorsque vous créez votre propre API, il faut que vous créez aussi
En informatique c’est quoi une Interface ? une documentation.
Les sites web et les applications possèdent aussi des interfaces pour
La documentation du code est un texte écrit par les développeurs
communiquer et échanger des données
pour rendre l’utilisation du code de l’API plus facile.
Cette interface comporte un ensemble de fonctions,
 Chaque fonction correspond à une action, La documentation explique comment le code fonctionne,
Une API est une interface pour les applications comment contribuer au projet, etc.

Lire la documentation est très important pour bien intégrer l’API


d’une autre plateforme.

46 Sans documentation, il est difficile d’utiliser l’API. 47

Créez un Microservice grâce à Spring Boot Créez un Microservice grâce à Spring Boot
L’API REST Exemple

les API “REST” (Representational State Transfer) sont propres et Créer un Microservice capable de gérer une liste de produits.
polyvalentes pour beaucoup de types d’échange d’information Exposer une API REST qui propose toutes les opérations CRUD
entre logiciels. (Create, Read, Update, Delete) pour la gestion des produits.
Les API REST sont basées sur HTTP. Nous allons avoir :
HTTP est un protocole qui définit la communication entre les Une classe Produit qui représente les caractéristiques d'un produit (nom,

différentes parties du web. L’échange est basé sur des requêtes prix, etc.) ;
Un contrôleur qui s'occupera de répondre aux requêtes CRUD et de faire les
client et serveur. Un client lance une requête HTTP, et le serveur
opérations nécessaires.
renvoie une réponse.
Les réponses du serveur pour les API REST peuvent être délivrées
dans de multiples formats. JSON (JavaScript Object Notation) est
souvent utilisé, mais XML, CSV, ou même RSS sont aussi valables.
48 49
03/05/2022

Créez un Microservice grâce à Spring Boot Créez un Microservice grâce à Spring Boot
Exemple Exemple

Les URLs à utiliser pour appeler notre Microservice Créer un contrôleur REST.
Requête GET à /Produits : affiche la liste de tous les produits ; Créer un package web,
Requête GET à /Produits/{id} : affiche un produit par son Id ; Créer un package controller dans web.
Requête PUT à /Produits/{id} : met à jour un produit par son Id ; Créer une classe ProductController
Requête POST à /Produits : ajoute un produit ; Indiquer à Spring que ce contrôleur est un contrôleur REST
Requête DELETE à /Produits/{id} : supprime un produit par son Id. @RestController,

50 51

Créez un Microservice grâce à Spring Boot Créez un Microservice grâce à Spring Boot
Exemple Exemple

Méthode pour GET /Produits


L'annotation @Controller de Spring permet de désigner une classe
Créer une méthode listeProduits qui retourne un String.
comme contrôleur,
package com.ecommerce.microcommerce.web.controller;
Les requêtes traitées sont de type GET, POST, etc.
import org.springframework.web.bind.annotation.RequestMapping;
Il faut ajouter @ResponseBody aux méthodes qui devront répondre
import org.springframework.web.bind.annotation.RequestMethod;
directement sans passer par une vue. import org.springframework.web.bind.annotation.RestController;

L'annotation @RestController est la combinaison des deux annotations @RestController


public class ProductController {
précédentes. @RequestMapping(value= "/Produits", method= RequestMethod.GET)
@RestController indique que cette classe va pouvoir traiter les requêtes public String listeProduits() {
return "Un exemple de produit à afficher pour vous";
que nous allons définir. }
}
@RestController indique que chaque méthode va renvoyer directement
L'annotation @RequestMapping permet de faire le lien entre l'URI
la réponse JSON à l'utilisateur, donc pas de vue dans le circuit. 52 53
"/Produits", invoquée via GET, et la méthode listeProduits.
03/05/2022

Créez un Microservice grâce à Spring Boot Créez un Microservice grâce à Spring Boot
Exemple Exemple

L'annotation @RequestMapping accepte plusieurs paramètres, dont les Afficher le résultat de la méthode listeProduits.
principaux : Utiliser l’URL: http://localhost:9090/Produits
value : permet de définir l'URI à laquelle la méthode doit répondre.
method : permet de définir à quel type de requêtes la méthode doit
répondre.
Exemple: Dans notre cas, la méthode listeProduits ne sera déclenchée que si l'URI
est exactement "/Produits" et que la requête est de type GET. Si vous appelez
"/Produits" avec un POST, notre méthode ne sera tout simplement pas évoquée.
method accepte toutes les requêtes CRUD.

54 55

Créez un Microservice grâce à Spring Boot Créez un Microservice grâce à Spring Boot
Exemple Exemple

Méthode pour GET /Produits/{id}


Remarque:
Créer une autre méthode capable d'accepter un Id de produit en
Il existe des raccourcis pour éviter d'écrire l'annotation à rallonge
paramètre listeProduits qui retourne un String.
import org.springframework.web.bind.annotation.PathVariable; @RequestMapping.

@RequestMapping(value = "/Produits/{id}", method = RequestMethod.GET) Exemple: pour une @RequestMapping qui accepte des requêtes de
public String afficherProduit(@PathVariable int id) {
type GET, vous pouvez la remplacer par @GetMapping.
return "Vous avez demandé un produit avec l'id " + id;
}
@RequestMapping(value = "/Produits/{id}", method = RequestMethod.GET)
La notation {id} dans l'URI permet d'indiquer que la méthode doit
répondre uniquement aux requêtes avec une URI de type /Produits/40 par
exemple. Le type de id (int id) est indiqué dans @PathVariable.
@GetMapping(value = "/Produits/{id}")

56 57
03/05/2022

Créez un Microservice grâce à Spring Boot Créez un Microservice grâce à Spring Boot
Exemple Exemple

Renvoyez une réponse JSON package public int getPrix() {


com.ecommerce.microcommerce.model; return prix;
Créer une classe (un Bean) « Product » qui représente un produit. }
public class Product {
La nouvelle classe Product est placée dans un package "model" sous le private int id; public void setId(int id) {
private String nom; this.id = id;
package microcommerce private int prix; }

Créer les propriétés de la classe et générer le constructeur et les getters et public Product() { public void setNom(String nom) {
} this.nom = nom;
setters: public Product(int id, String nom, }
int prix) {
this.id = id; public void setPrix(int prix) {
this.nom = nom; this.prix = prix;
this.prix = prix; }
}
@Override
public int getId() { public String toString() {
return id; return "Product{"+"id=" +id+ ",
} nom="+ nom +'\'' + ", prix="+ prix
public String getNom() { +'}';
58
return nom; } 59
} }

Créez un Microservice grâce à Spring Boot Créez un Microservice grâce à Spring Boot
Exemple Exemple

Renvoyez une réponse JSON Renvoyez une réponse JSON


Créer une nouvelle méthode afficherListProduct qui permet de renvoyer un Nous avons indiqué que notre classe est un contrôleur REST grâce à
produit au lieu de String. l'annotation @RestController. @RestController
public class ProductController {
@GetMapping(value = "/ListProduits/{id}") ...
public Product afficherListProduit(@PathVariable int id) { }
Product product = new Product(id, new String("Aspirateur"), 100);
return product; Spring sait que les réponses à nos requêtes devront être en format JSON.
}
L'auto-configurateur cherche si nous avons dans notre classpath une
1. Lancez de nouveau le Microservice
2. Rendez-vous sur http://localhost:9090/ListProduits/40
dépendance capable de transformer un object Java en JSON, et
inversement.
Jackson est importé avec le starter. Le Bean Product que nous renvoyons
Ajouter l’extension JSON à est transformé en JSON puis servi en réponse.
votre navigateur
60 61
Réponse formatée en JSON
03/05/2022

Créez un Microservice grâce à Spring Boot Créez un Microservice grâce à Spring Boot
Exemple Exemple

On souhaite créer une application qui permet de gérer des produits. Structure du projet
Chaque produit est défini par son Id (de type Long), sa désignation, son
prix et sa quantité. L’application doit permettre les opérations suivantes :
Ajouter un nouveau produit
Consulter tous les produits
Consulter les produits dont le nom contient un mot clé.
Consulter un produit
Supprimer un produit
Mettre à jour un produit.
Elle doit être fermée à la modification et ouverte à l’extension.
L’injection des dépendances sera effectuée en utilisant Spring IOC.
62 63

Créez un Microservice grâce à Spring Boot Créez un Microservice grâce à Spring Boot
Exemple Exemple

Application.properties POM.XML

Cette dépendance doit


être ajouter dans le
fichier POM.xml

64 65
03/05/2022

Créez un Microservice grâce à Spring Boot Créez un Microservice grâce à Spring Boot
Exemple Exemple

Spring Boot Application Entités


package cat; Entité Produit :
import org.springframework.boot.SpringApplication;
import package cat.entities;
org.springframework.boot.autoconfigure.SpringBootApplication; @Entity
@SpringBootApplication public class Produit {
@Id
public class CatApplication { @GeneratedValue(strategy =
public static void main(String[] args) { GenerationType.IDENTITY)
SpringApplication.run(CatApplication.class, args); @NotEmpty
} @Size(min=4,max=12)
} private Long reference;
@NotEmpty
private String designation;
private double prix;
private int quantite;
// Constructeurs
// Getters et Setters
}

66 67

Créez un Microservice grâce à Spring Boot Créez un Microservice grâce à Spring Boot
Exemple Exemple

Couche DAO Couche Web


Interface ICatalogueDAO: Le contrôleur Rest:
package cat.controllers;
@RestController
package cat.dao;
public class CatalogueController {
import org.springframework.data.jpa.repository.JpaRepository;
@Autowired
import cat.entities.Produit;
private IProduitRepository produitRepository;
public interface IProduitRepository extends JpaRepository <Produit, Long> {
@RequestMapping("/save")
@Query("select p from Produit p where p.designation like :x")
public Produit saveProduit(Produit p){
public Page<Produit> produitParMC(@Param("x")String mc,Pageable p); produitRepository.save(p);
public List<Produit> findByDesignation(String des); return p;
public Page<Produit> findByDesignation(String des,Pageable p); }
} @RequestMapping("/all")
public List<Produit> getProduits(){
return produitRepository.findAll();
}
@RequestMapping("/produits")
public Page<Produit> getProduits(int page){
return produitRepository.findAll(new PageRequest(page, 5));
68 } 69
03/05/2022

Créez un Microservice grâce à Spring Boot Créez un Microservice grâce à Spring Boot
Exemple Exemple

Couche Web Ajouter un produit


Le contrôleur Rest:
@RequestMapping("/produitsParMC")
public Page<Produit> getProduits(String mc,int page){
return produitRepository.produitParMC("%"+mc+"%", new
PageRequest(page, 5));
}
@RequestMapping("/get")
public Produit getProduit(Long ref){
return produitRepository.findOne(ref);
}
@RequestMapping("/delete")
public boolean delete(Long ref){
produitRepository.delete(ref);
return true;
}
@RequestMapping("/update")
public Produit update(Produit p){
produitRepository.saveAndFlush(p);
return p;
}
70 71
}

Créez un Microservice grâce à Spring Boot Créez un Microservice grâce à Spring Boot
Exemple Exemple

Consulter tous les produits Consulter une page de produits

72 73
03/05/2022

Créez un Microservice grâce à Spring Boot Créez un Microservice grâce à Spring Boot
Exemple Exemple

Consulter un produit Mettre à jour un produit

74 75

Créez un Microservice grâce à Spring Boot Créez un Microservice grâce à Spring Boot
Exemple Exemple

Supprimer un produit Couche DAO


Implementation CatalogueDAOImpl:
package org.miage.sid.dao;
import java.util.*;
import org.apache.log4j.Logger;
public class CatalogueDaoImpl implements ICatalogueDAO {
private Map<String, Produit> produits=new HashMap<String,
Produit>();
Logger logger=Logger.getLogger(CatalogueDaoImpl.class);
@Override // injection des dépendances
public void addProduit(Produit p) {
produits.put(p.getReference(), p);
}
@Override
public List<Produit> getAllProduits() {
Collection<Produit> prods=produits.values();
return new ArrayList<Produit>(prods);
76 77
}
03/05/2022

Créez un Microservice grâce à Spring Boot Créez un Microservice grâce à Spring Boot
Exemple Exemple

Communiquer avec une base de données


Communiquer avec une base de données
Transformez la classe Product en entité gérée par JPA.
Importer toutes les dépendances nécessaires à l'utilisation du JPA. Spring
Boot nous offre un starter prêt à l'emploi : spring-boot-starter-data-jpa.
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>

Après l’ajout du starter, cliquer sur l'icône de rafraichissement du projet


Maven fournie par IntelliJ.

78 79

Créez un Microservice grâce à Spring Boot Créez un Microservice grâce à Spring Boot
Exemple Exemple

Communiquer avec une base de données


Communiquer avec une base de données
Transformez la classe Product en entité gérée par JPA.
Transformez la classe Product en entité gérée par JPA.
Importer toutes les dépendances nécessaires à l'utilisation du JPA. Spring
Ajouter les annotations @Entity, @Id, @GenerateValue à la classe Product.
Boot nous offre un starter prêt à l'emploi : spring-boot-starter-data-jpa.
package com.ecommerce.microcommerce.model;
La classe Product est scannée et import javax.persistence.Entity;
<dependency>
import javax.persistence.GeneratedValue;
<groupId>org.springframework.boot</groupId> prise en compte par l’ajout de
import javax.persistence.Id;
<artifactId>spring-boot-starter-data-jpa</artifactId> l’annotation @Entity afin qu'elle
</dependency> @Entity
soit. public class Product {
@Id
Après l’ajout du starter, cliquer sur l'icône de rafraichissement du projet L'attribut id est identifié en tant @GeneratedValue
que clé unique auto-générée private int id;
Maven fournie par IntelliJ. private String nom;
avec @Id et @GeneratedValue afin private int prix;

qu'il soit.

80 81
03/05/2022

Installer Tomcat

Configurer Tomcat

82 83

Installer Tomcat Installer Tomcat

Partie 5 : Tests
Lancez le navigateur sur l’url : http://localhost:8080 . L’écran suivant apparaît

84 85

Vous aimerez peut-être aussi