0% ont trouvé ce document utile (0 vote)
12 vues14 pages

Controle

Transféré par

yasser
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
12 vues14 pages

Controle

Transféré par

yasser
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF ou lisez en ligne sur Scribd
Architecture Micro-services avec RestTemplate Dans ce TP, nous allons mettre en place une application basée sur une architecture microservices pour gérer les clients et les voitures. La communication entre les microservices sera réalisée & l'aide de Rest Template, et nous allons remplacer les fichiers de configuration au format properties par des fichiers YAML. ‘A- Mise en place du service discovery Eureka Pour mettre en place le service discovery Eureka avec la configuration YAML fournie, suivre les tapes suivantes Etape 1 : Créer un projet Spring Boot Utiliser Spring Initializer pour créer un nouveau projet Spring Boot. Sélectionner les dépendances nécessaires, y compris "Eureka Server” tape 2: Configurer le fichier application. yml. Ajouter le contenu fourni au fichier src/main/resources/application. yml du projet. Assurer que le fichier contient les propriétés suivantes port: 8761 eureka: client: register-with-eureka: false fetch-registry: false ‘Logging: ‘level [Link]: OFF Pr. Mohamed LACHGAR (lachgarm@ [Link]) Développement JEE 8 Chapter 1. Spring Cloud [Link]: OFF Etape 3 : Configurer la classe principale Assurer que la classe principale de votre application (généralement annotée avec @SpringBoot Application) contient annotation @EnableEurekaServer. Cela indique & Spring Boot de configurer cette ap- plication en tant que serveur Eureka. import org. springfranework. boot SpringApplication; import org. [Link]. autoconf igure .SpringBootApplication; import [Link] .[Link] EnablefurekaServer; oBnableEurekaServer @SpringBootAppl ication public class EurekaServerApplication { public static void main(String[] args) { [Link]([Link], args); 3 Etape 4: Exécuterl’application Démarrer l'application, Ensuite, accéder & 'interface utlisateur Eureka en ouvrant un navigateur Web et en naviguant vers http: //Localhost::8761, Ace stade, vous avez configuré un serveur Eureka avec les proprigtés spécifiées dans le fichier YAML. Il est important de noter que cette configuration désactive I'enregistrement du serveur Eureka en tant que client (registre et récupération). Vous pouvez. personnaliser davantage la configuration en fonction de vos besoins spécifiques. Le microservice "Client" est une application Spring Boot qui gére les opérations liées aux clients. I utilise une base de données MySQL pour stocker les informations des clients, notamment leur nom et leur ge. Le service expose des points de terminaison RESTful permettant de récupérer la liste complete des clients, de rechercher un client par identifiant, et d’ajouter de nouveaux clients. L’application est configurée avec le service Eureka pour la découverte des services dans un environnement microservices. Pr. Mohamed LACHGAR (lachgarm@ [Link]) Développement JEE coneramplecent © CientCenroer © cient @ Chertepontory © Gientsenice B chenryptcaton empltes 1 appleatonymi Etape 1 : Configurer le service Spring Boot 1, Créer un projet Spring Boot en utilisant Spring Initializer et sélectionnez les dépendances nécessaires, notamment "Spring Web” et "Spring Data JPA". 2. Assurer que le fichier application. yml est configuré comme suit port: 8081 spring: application name: SERVICE-CLIENT datasource: driver-class-name: [Link] url: jdbc mysql: //Locathost :3306/clientservicedb?createDatabaselfNotExi username: "root" password: "" Spa: hibernate: ddl-auto: update show-sql: true Etape 2: Créer |'entité Client 1, Créer une classe Java nommée Client dans le package com. example. client. entities. 2. Utiliser les annotations IPA pour définir entité, y compris I’identifiant généré automatique ment. 3. Ajouter les propriétés id, nom, et age avec les annotations appropriées. package [Link] entities; import [Link]; import jakarta. [Link]; import jakarta. [Link]; import [Link]. Id; Pr. Mohamed LACHGAR (lachgarm@ [Link]) Développement JEE 10 Chapter 1. Spring Cloud import Lombok. AllargsConstructor; import [Link]; import [Link]; omntity Data eNoArgsConstructor OALLArgeConstructor public class Client { ora OGeneratedValue (strategy = GenerationType. IDENTITY) private Long id; private String nom; private Float age; Etape 3 : Créer le repository JPA 1. Créer une interface Java nommée ClientReposi tory dans le package com. example. client repositories. 2. Etendre l’interface JpaRepository avec les types Client et Long. package com. example. client repositories; import [Link]; import org. [Link]. jpa. repository. JpaRepository; import [Link]. stereotype Repository; Repository public interface ClientRepository extends JpaRepository { } Etape 4 : Créerle service 1. Créer une classe Java nommée ClientService dans le package com. example client .services. 2. Utiliser I’annotation @Service pour marquer la classe comme un service Spring. 3. Injecter le ClientReposi tory dans la classe et implémentez les méthodes nécessaires package [Link]. client services; import [Link]; import [Link]. client repositories .ClientRepository; import [Link]. beans. factory annotation. A import org. springfranework. stereotype Service; wired; import [Link]; aservice public class ClientService { @autowired private ClientRepository clientRepository; public List finda { return [Link](); Pr. Mohamed LACHGAR (lachgarm@ [Link]) Développement JEE 3 public Client findByTd(Long id) throws Exception { return [Link]éByl4(i4) .orElseThrow(() -> now coption("Iavalid Client 1D"); } public void addClient(Client client) { [Link] (client) ; } Etape 5 : Créer le contrdleur REST 1, Créer une classe Java nommée ClientController dans le package [Link]. client .controllers, 2. Utiliser annotation @RestController pour marquer la classe comme un contrdleur REST. 3. Définirles endpoints (/api /c1ient) en uilisant les annotations @GetMapping, ¢PostMapping, ete. package [Link]; import com. example. [Link]; import [Link]; import org. springfranework. beans. [Link]. Autowired; import [Link]. bind. annotation. *: import [Link]; oRestController oRequestMapping("api/client") public class ClientController { oautowired private ClientService service; @Gettapping public List findal( { retura service. findél1(; } eGetMapping("/(id)") public Client findByld(aPathVariable Long i) throws Exception { return [Link] (id) ; 3 oPostMapping public void save(@RequestBody Client client) { [Link] (client) ; } Pr. Mohamed LACHGAR (lachgarm@ [Link]) Développement JEE 12 Chapter 1. Spring Cloud Etape 6 : Configurer et exécuter application 1, Ajouter une implémentation CommandLineRunner pour l’ajout des clients @SpringBootApplication public class ClientApplication { ic static void main(String(] args) { [Link]([Link], args); Bean ConmandLineRunner initializel2Database (ClientRepository clientRepository) { return arge > { [Link](new Client([Link]("1"), "Amine SAFI", [Link]("23"))); [Link](new Client ([Link]("2"), "Anal ALAQUI", [Link]("22"))); [Link](new Client ([Link]("3"), "Samir RAMI", [Link]("22"))); > Démarrer I’ application Spring Boot & l'aide de Maven ou Gradle. Assurer d’ avoir une base de données MySQL en cours d’exécution avec le nom de base de données configuré dans le fichier application. yml, Taper "URL http: //localhost:8081 /api/client dans le navigateur pour afficher la liste des clients du service. Quels résultats obtenez-vous ? - C - Service Gateway Etape 1 : Ajouter les dépendances Assurer d’avoir les dépendances nécessaires dans le projet. Ajouter les dépendances suivantes dans vote fichier build. gradle (pour Gradle) ou pom. xm (pour Maven) Grade: dependencies < impleentation ’[Link] : pring-boot-starter-web? implenentation ’[Link]:epring-cloud-starter-gateway? inplenentation org. [Link]:spring-cloud-starter-netflix-eureka-clien Maven: org. [Link] spring-boot-starter-veb Pr. Mohamed LACHGAR (lachgarm@ [Link]) Développement JEE org. springframework. cloud spring-cloud-starter-gateway org. springfranevork. cloud spring-cloud-starter-netflix-eureka-client mide pa ba comexarpiece contol, © coenteler © Cor © Client Y Ea model © Coesponse © Ca repositories ® Cotepesitory © carsenice contpplication Aempites 6 mpplicationsy Etape 1 : Configuration de Ia base de données Assurer qu'une instance MySQL exécutée localement sur le port 3306. Créer une base de données nommée carservicedb. Les paramétres de connexion & la base de données sont définis dans le fichier application. yml. port: 9082 spring: ‘application name: SERVICE-CAR datasource: driver-class-nane: [Link] url: jébe:mysql: //localhost :3806/carservicedb?createDatabaselfNotExis usernane: "root: password: "" Spe! hibernate: ddl-auto: update show-sql: true Etape 2 : Création des entités et des repositories Créer les entités Car et Client ainsi que le repository CarRepository dans les packages correspon dants. Entity bata @ALLArgaConstruc GNoArgeConstructor public class Car { Pr. Mohamed LACHGAR (lachgarm@ [Link]) Développement JEE 16 Chapter 1. Spring Cloud ora OGeneratedValue (strategy = GonerationType. IDENTITY) private Long id; private String brand; private String model; private String matricule; private Long client_id; pata @ALLArgaConstru ONoArgeConstructor public class Client { private Long id; private String name; private Integer age; ‘Repository public interface CarRepository extends JpaRepository { } Etape 3 : Création des modéles Créer le modéle CarResponse dans le package [Link]. Builder eData @ALLArgsConstructor @NoArgsConstructor public class CarResponse { private Long id; private String brand; private String model; private String matricue; private Client client; Etape 4 : Configuration du Service REST Dans la classe CarService, vous avez déja configuré la communication avec le service client en utilisant Rest Template. (@SpringBootApplication public class CarApplication { public static void main(Stringl] args) { [Link]([Link], args); y Bean public RestTemplate restTemplate() ¢ RostTeuplate restTomplate = now RestTemplate() ; SimpleClientittpRequestFactory requestFactory = new Pr. Mohamed LACHGAR (lachgarm@ [Link]) Développement JEE SimpleClientitttpRequestFactory() ; requestFactory .setConnectTimeout (5000) ; [Link] (5000) ; restTomplate. setRequestFactory (requestFactory) ; return restTemplate; Assurer que le service client est en cours d’exécution sur le port 8888 via la gateway. Modifier TURL si nécessaire. Service public class CarService { ‘autowired private CarRepository carRepository; Ohutowired private RestTemplate restTemplate; private final String URL="http: //Localhost :8888/SERVICE-CLIENT"; public List findAl10) ¢ List cars = carRepositery.findAl10; Responseintity response = [Link] ([Link]+" /api/clie CLient[] clients = response. getBody(); return [Link]().map((Car car) -> apToCarResponse(car,clients)) .toList(); sClient (J. class); x // this function allow the change the Car Entity to A Model that ve will send ot the client side using the @Builder Annotation private CarResponse mapToCarResponse(Car car, Client (] clie1 Client foundClient = [Link](clients) -filter(client -> [Link]() .equals(car.getClient_ia())) findFirst () orElse (null) ; return CarResponse. builder () id(car-getIaQ) -brand(car.get3rand()) - client (foundClient) matricue([Link]()) nodel (car .getModel ()) build; public CarResponse findByTa(Long id) throws Exception { Car car= carRepository .findByld (id) -orElseThrow(()->new Exception("Invalid Car Id" Client client restTenplate. getForObject ([Link]*"/api/cli return CarResponse. builder () id([Link]()) -brand([Link]()) -client (client) matricue([Link]()) 1s/"#ear getClient_id() ,[Link]) ; Pr. Mohamed LACHGAR (lachgarm@ [Link]) Développement JEE 18 Chapter 1. Spring Cloud -model (car .getModel ()) sulla; Etape 5 : Création des Contrdleurs Dans la classe CarController, eréer les contrOleurs pour récupérer toutes les voitures (find All) et récupérer une voiture par ID (findByld). GRestController @RequestMapping("api/car") public class CarController { ‘Autowired private CarService carService; @Gettapping public List findAl1() return [Link](); y (GetMapping("/{idb") public CarResponse findByld(ePathVariable Long id) throws Exception { return [Link](id) ; } Etape 6 : Lancement de l'application Exécuter I’application en exécutant la classe CarApplication avec la méthode main. Assurer qu'il n'y a pas d’erreurs lors du démarrage. Instances currently registered with Eureka ‘Aopkeation rarer? sats GATEWAY a) UP (1)- DESKTOP: ATA Gare 888 SEAVCE-CAR a) tp (1)-Ds«[Link]#082 SEAVICE-CLENT matt) a) vp (1)-DEsKTOe. AT 36ho-SERVICE.CLENT808) Etape 7 : Test des Endpoints Utiliser un outil comme Postman ou curl pour tester les endj requétes GET pour récupérer toutes les voitures et une voiture par ID. Pr. Mohamed LACHGAR (lachgarm@ [Link]) Développement JEE 19 G © localhost:8838/SERVICE-CAR/api/car/t Pourquoi le nom est null ? Corriger erreur. Afficher les listes des voitures G © _locathost:!#888/SERVICE-CAR/api/car i "id": 2, "oon": "Amal ALAOUT™, "age": 22 "Toyota", nasse", 8347 6755", Pr. Mohamed LACHGAR (lachgarm@ [Link]) Développement JEE

Vous aimerez peut-être aussi