Atelier 1 Spring Boot PDF [PDF]

  • 0 0 0
  • Gefällt Ihnen dieses papier und der download? Sie können Ihre eigene PDF-Datei in wenigen Minuten kostenlos online veröffentlichen! Anmelden
Datei wird geladen, bitte warten...
Zitiervorschau

Atelier 1 Spring boot Les couches Modèle, Persistance et Service d'une application Web MVC CRUD Emna KALLEL [email protected]

L’architecture Microservices

Les micro services sont une approche d’architecture et de développement d’une application composées de petits services. L’idée étant de découper un grand problème en petites unités implémentées sous forme de micro-services. Chaque service est responsable d’une fonctionnalité. Chaque micro-service est développé, testé et déployé séparément des autres. Chaque micro-service est développé en utilisant une technologie qui peut être différente des autres. (Java, C++, PHP, Python, …). Chaque service tourne dans un processus séparé. Utilisant des mécanisme de communication légers (REST). La seule relation entre les différents micro-services est l’échange de données effectué à travers les différentes APIs qu’ils exposent. Lorsqu’on les combinent, ces micro-services peuvent réaliser des opérations très complexes. 2

L’architecture Microservices

3

L’architecture Microservices

Le développement d’une application autour de l'architecture Microservices en Java exige l’utilisation d’un framework qui facilite le développement d‘une application totalement autonome.  Le framework Spring Boot.

4

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

Une

technologie

de

développement

d’application

WEB

(framework) qui dispense d’écrire du code Java dans les interfaces Spring Boot est un framework qui facilite le développement d'applications permettant

fondées

d'obtenir

totalement autonome.

5

sur une

Spring

en

application

offrant

des

packagée

en

outils jar,

Utilisations possibles de spring boot

1. Seulement pour le développement de la partie Backend  

Partie Backend sous forme de web services/api REST



Pour le Mobile: Développement native iOS ou Android ou développement hybride (Flutter)

Pour le web: Partie Frontend développé avec Angular ou React ou autres

2. Pour le développement du Backend et du Frontend 

Développement Web MVC rendu coté Serveur en utilisant Thymeleaf et Bootstrap

6

Les couches de Spring boot

Emna KALLEL

7

Outils à installer • 1- Jdk 8 • 2- Spring tools 4 for eclipse (sts) • 3- Xamp • 4- Postman Tous ces outils sont dans disponibles dans ce lien drive: outils for spring boot - Google Drive

Emna KALLEL

8

objectifs • Création d’un premier projet Spring boot, • Création de l’entité Produit et de son interface Repository, • Configuration du fichier application.properties, • Tester les opérations CRUD sur l’entité Produit, • Création de la couche Service,

Emna KALLEL

9

1. Création d’un premier projet Spring boot, 2. Création de l’entité Produit et de son interface Repository, 3. Configuration du fichier application.properties, 4. Tester les opérations CRUD sur l’entité Produit, 5. Création de la couche Service,

Emna KALLEL

10

Création d’un premier projet Spring boot • Lancer sts et Créer un projet « Spring Strarter Project » (si vous ne le trouvez pas cherchez dans Others)

Emna KALLEL

11

Création d’un premier projet Spring boot • Next Séléctionner les dépendances nécessaires

Emna KALLEL

12

Emna KALLEL

13

1. Création d’un premier projet Spring boot, 2. Création de l’entité Produit et de son interface Repository, 3. Configuration du fichier application.properties, 4. Tester les opérations CRUD sur l’entité Produit, 5. Création de la couche Service,

Emna KALLEL

14

Création de l’entité Produit et de son interface Repository • Créer une nouvelle classe java dans com.gt.produits (main)

Emna KALLEL

15

Créer une classe java bean

Emna KALLEL

16

Une classe java bean • Contient: – Des attributs privés – Un constructeur par défaut – Un constructeur avec arguments – Les getters et les setters – toString

Emna KALLEL

17

Définition des arguments

Emna KALLEL

18

Générer un constructeur par défaut, Getters and Setters, toString

Emna KALLEL

19

Générer un constructeur avec argument

Emna KALLEL

20

Produit.java

Emna KALLEL

21

Ajouter les annotations de persistance

Emna KALLEL

22

Créer l’interface repository • Pour pouvoir enregistrer, modifier et de supprimer les objets du produit au niveau de la DB, spring nous donne un mécanisme très puissant  Repository • Pour chaque entité crée je dois créer son interface repository pour pouvoir faire les opérations CRUD

Emna KALLEL

23

Créer l’interface repository • Créer une nouvelle interface java dans com.gt.produits (main)

Emna KALLEL

24

Créer l’interface repository Par convention le nom de l’interface doit se composer du nom de l’entité suivi du mot Repository

Emna KALLEL

25

L’interface « ProduitRepository »

La classe entité

Emna KALLEL

Type de l’id

26

1. Création d’un premier projet Spring boot, 2. Création de l’entité Produit et de son interface Repository, 3. Configuration du fichier application.properties, 4. Tester les opérations CRUD sur l’entité Produit, 5. Création de la couche Service,

Emna KALLEL

27

Configuration du fichier application.properties • Modifier le fichier src/main/resources/application.properties comme suit : spring.datasource.url=jdbc:mysql://localhost:3306/spring_DB?crea teDatabaseIfNotExist=true&useSSL=false&serverTimezone=UTC spring.datasource.username=root spring.jpa.show-sql=true spring.jpa.hibernate.ddl-auto=update

Emna KALLEL

28

Etapes à suivre • • • •

Lancer Xamp lancer les serveurs Apache et MySQL Lancer PhpMyAdmin Vérifier les bases de donnée existants

Emna KALLEL

29

Base de donnée existante avant l’exécution du projet

Emna KALLEL

30

Exécution du projet

Emna KALLEL

31

Console

Emna KALLEL

32

Base de donnée existante après l’exécution du projet

Emna KALLEL

33

1. Création d’un premier projet Spring boot, 2. Création de l’entité Produit et de son interface Repository, 3. Configuration du fichier application.properties, 4. Tester les opérations CRUD sur l’entité Produit, 5. Création de la couche Service,

Emna KALLEL

34

Interface: Injection de dépendance Lors de la séparation d'un code en plusieurs classes, nous avons une dépendance directe d'une classe a une autre. Nous séparons le code général en une classe A et une classe B. La classe A doit utiliser une méthode de la classe B. public class A { public static void main(String[] args) B b = new B(); b.someMethod(); } }

Le java fournit un moyen de simplifier la gestion des dépendances : l'Interface. Les interfaces en java permettent de définir des méthodes et leurs paramètres sans en définir le code. Ces interfaces sont ensuite implémentées par les Emna KALLEL 35 classes dont on dépend.

Injection de dépendance: spring IOC Pour faire de l'injection de dépendance, Spring boot utilise le framework Spring IoC (inversion of control) qui utilise aussi des annotations qui permettent de se passer d'une description en détails dans un fichier XML. Parmis ces annotations on peut trouver la plus connue @Autowired qui indique à Spring de chercher une implémentation pour l'injecter.

Emna KALLEL

36

Modifier la classe ProduitsApplicationTests • Ecrire la méthode pour tester l’ajout d’un produit à la base de données, modifier la classe src/main/test/com.gt.produits.ProduitsApplicationTests comme suit : @SpringBootTest class ProduitsApplicationTests { @Autowired private ProduitRepository produitRepository; @Test public void testCreateProduit() { Produit prod = new Produit("PC Dell",2200.500,new Date()); produitRepository.save(prod); } }

Emna KALLEL

37

Run avec JUnit Sélectionnez la méthode testCreateProduit puis clic droit/Run as /JUnit test, puis vérifier l’insertion d’un produit dans la table produit,

Emna KALLEL

38

console

Emna KALLEL

39

La table de la BD après l’éxecution

De la même manière tester les autres opérations

Emna KALLEL

40

Chercher un produit @Test public void testFindProduit() { Produit p = produitRepository.findById(1L).get(); System.out.println(p); }

Emna KALLEL

41

Mettre à jour un produit @Test public void testUpdateProduit() { Produit p = produitRepository.findById(1L).get(); p.setPrixProduit(1000.0); produitRepository.save(p); }

Emna KALLEL

42

Supprimer un produit @Test public void testDeleteProduit() { produitRepository.deleteById(1L);; }

Emna KALLEL

43

Lister tous les produits @Test public void testListerTousProduits() { List prods = produitRepository.findAll(); for (Produit p : prods) { System.out.println(p); } }

Emna KALLEL

44

1. Création d’un premier projet Spring boot, 2. Création de l’entité Produit et de son interface Repository, 3. Configuration du fichier application.properties, 4. Tester les opérations CRUD sur l’entité Produit, 5. Création de la couche Service,

Emna KALLEL

45

L’interface ProduitService • Créer, dans le package com.gt.produits.service l’interface ProduitService package com.gt.produits.service; import java.util.List; import com.gt.produits.entities.Produit; public interface ProduitService { Produit saveProduit(Produit p); Produit updateProduit(Produit p); void deleteProduit(Produit p); void deleteProduitById(Long id); Produit getProduit(Long id); List getAllProduits(); }

Emna KALLEL

46

la classe ProduitServiceImpl @Service public class ProduitServiceImpl implements ProduitService { @Autowired ProduitRepository produitRepository; @Override public Produit saveProduit(Produit p) { return produitRepository.save(p); } @Override public Produit updateProduit(Produit p) { return produitRepository.save(p); } @Override public void deleteProduit(Produit p) { produitRepository.delete(p); } Emna KALLEL

47

la classe ProduitServiceImpl @Override public void deleteProduitById(Long id) { produitRepository.deleteById(id); } @Override public Produit getProduit(Long id) { return produitRepository.findById(id).get(); } @Override public List getAllProduits() { return produitRepository.findAll(); } } Emna KALLEL

48