Formations Architecture

Logo Spring Core

Spring Core

Développer une application Java/JEE avec Spring

40% théorie, 60% pratique
(4.3) NaN évaluations de janvier 2019 à ce jour
Durée 3 jours • 21 heures Obtenir un devis
Icône pour Exclusive Exclusive
Icône pour Nouveauté Nouveauté
Icône pour Présentiel Présentiel
Icône pour "À distance" À distance
Icône pour Certifiante Télécharger la plaquette descriptive

Introduction à Spring Boot

  • Comment le framework Spring a changé la façon de développer les applications Java
  • Spring Boot: comment ce framework de “Convention over Configuration” a permis de simplifier l’utilisation de Spring
  • Création d’une première application Spring Boot avec start.spring.io
  • Mise en place de JUnit et AssertJ pour les tests automatisés

L’Injection de Dépendances

  • L'injection de dépendances, à quoi ça sert ? (exemples avec les Singletons, les dépendances contextuelles, Les Proxies)
  • Injection par constructeur ou par setter: quelles sont les bonnes pratiques ?
  • Les annotations @Scope, @Qualifier et @Value
  • Le cycle de vie des applications Spring

La Programmation Par Aspect avec Spring

  • Présentation de la programmation par Aspects
  • Les Aspects qui sont intégrés dans le framework Spring: Transactions, Security, Caching…
  • Mode de fonctionnement de la programmation par Aspects: comment Spring utilise les Proxies pour l’injection de code
  • Créer ses propres Aspects (exemples avec les Logs et la gestion des exceptions)

Accès aux bases de données relationnelles avec Spring Data JPA

  • JDBC, JPA, Hibernate, Spring Data: pourquoi tant de couches différentes ?
  • Rappels sur l’utilisation de JPA (Entités, Relations, cascade, lazy loading)
  • Mise en place Spring Data JPA pour simplifier les interactions JPA
  • Préparation aux Microservices : comment utiliser les “loose relationships” et les Agrégats pour avoir des requêtes plus simples, et pouvoir - facilement passer aux microservices si nécessaire

Les Transactions avec Spring

  • Transactions programmatiques ou déclaratives : quelle différence ?
  • L’approche déclarative de Spring avec @Transactional
  • Bonnes pratiques pour la gestion du rollback
  • Utilisation des Transactions dans les tests unitaires
  • Bonnes pratiques pour le chaînage et la propagation des transactions
  • Préparation aux microservices: Transaction IDs et idempotence

Exposer une API REST avec Spring

  • Exposition d’un service REST avec Spring MVC (get/post/put/delete)
  • Construire une API Spring avec OpenAPI et Swagger-UI
  • OpenAPI: les differences entre Contract-first et Contract-last
  • Validation des requêtes entrantes (avec ou sans l’annotation @Valid)
  • Personnalisation de la sérialisation JSON avec les annotations Jackson
  • Bonnes pratiques: qu’est ce que le pattern Data Transfer Object et quand faut-il l’utiliser ?
  • Gestion des exceptions : comment toujours renvoyer un message clair en cas d’erreur

Tests automatisés et Gestion des Profils

  • Passage en revue des outils de Test Unitaires utilisés dans les Travaux Pratiques
  • Bonne pratique : utilisation du cache pour que les tests s'exécutent plus rapidement
  • Utilisation de l'intégration Test Containers dans Spring pour que les tests utilisent le même type de base de données qu’en production (MySQL, PostgreSQL…)
  • Utilisation des “Spring Profiles” pour définir des contextes Développement / Tests / Production

Observabilité

  • Différence entre les Logs, les Métriques et les Traces
  • Utilisation de Spring Boot Actuator
  • Comment surveiller le bon fonctionnement d’une application
  • Comment changer le niveau de Logs sans redémarrer le serveur d’applications
  • Préparation aux microservices: gestion des logs, métriques et traces dans un système distribué

Introduction aux Microservices avec Spring

  • Différence entre Monoliths et Microservices. Faut-il toujours avoir une architecture Microservices ?
  • Bonne pratique : organisation du code des le depart pour un passage facile aux microservices
  • Introduction aux Composants Spring Cloud pour les microservices