Académique Documents
Professionnel Documents
Culture Documents
emna.kallel@enetcom.usf.tn
L’architecture Microservices
3
L’architecture Microservices
4
Spring Boot Qu’est-ce que c’est ?
5
Utilisations possibles de spring boot
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 »
Emna KALLEL 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
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();
}
}
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
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<Produit> 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<Produit> 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<Produit> getAllProduits() {
return produitRepository.findAll();
}
}
Emna KALLEL 48