Développer avec Spring-Boot
Cours Pratique de 5 jours
Tarif par participant :
2400 € HT
Objectifs
- Découvrir le framework Spring
- Démarrer un projet Spring Boot
- Maîtriser la configuration automatique de Spring Boot
- Adapter la configuration aux besoins spécifiques des projets
- Simplifier le développement des tests
- Packager et déployer une application Spring Boot selon différents contextes
Prérequis
- Connaissance de base du langage Java
- Accès à un environnement de développement (IDE, outils de build).
Le programme
1. Introduction à l’orienté aspect
- Comprendre l’orienté Aspect
- Inversion de contrôle et Injection de dépendances
- Vue d’ensemble du framework spring
- Comment le framework Spring a changé la façon de développer les applications Java
- Les Modules Spring
2. Spring Core
- Construction des instances
- Injection des instances
- Annotation ou configuration
- SpEL (Spring Expression Language)
- Spring profiles
- Nommage des beans et bean factory
- Bean scopes
- Autowiring
- « Application Context »
3. Initialisation d’une application Spring Boot
- Initialisation d’une application Spring Boot
- L’écosystème Spring et la complexité de sa configuration.
- Principe de « convention over configuration ».
- Starters et auto-configuration.
- Mise en œuvre de Spring Initializr, création d’une application web simple.
Travaux pratiques
Identification des starters correspondant aux besoins, production du squelette de l’application Spring Boot en devenir.
4. Gestion des dépendances et de l’autoconfiguration
- Organisation des dépendances Maven, gestion transparente des versions.
- Structuration du code, les bonnes pratiques.
- Rôle des annotations @SpringBootApplication et @EnableAutoconfiguation, la classe « application ».
- Anatomie d’une classe d’auto-configuration, rôle des annotations @Conditionnal.
- Contrôle de l’auto-configuration, utilisation des fichiers de propriétés application.properties et application.yml.
Travaux pratiques
Réorganisation des packages de l’application existante, création d’une classe « application », contrôle de la configuration automatique aux besoins de l’application existante.
5. Concevoir une application Spring Boot
- Définition des profils.
- Configuration des traces : log4j2 versus logback.
- JPA et Spring Data JPA avec Spring Boot.
- Spring MVC avec Spring Boot.
- Configuration des infrastructures techniques “embedded” (base de données, conteneur de servlets).
- Faciliter le développement à l’aide de Spring Boot DevTools.
Travaux pratiques
Mettre en œuvre les infrastructures techniques « embedded », maximiser l’auto-configuration.
6. Accès aux données avec Spring Data JPA
- L’accès à une base de données relationnelle depuis une application Spring
- Introduction à Spring Data.
- 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
Travaux pratiques : Mise en place d’une couche d’accès aux données avec Spring.
7. Tester une application Spring Boot
- Auto-configuration des tests.
- Test de la persistance avec @DataJpaTest.
- Test d’intégration avec @SpringBootTest.
- Test des API REST avec @AutoConfigureMockMvc, @WebMvcTest et RestTemplate.
- Monitorer une application Spring Boot avec Actuator.
Travaux pratiques
Mettre à niveau les tests unitaires et d’intégration de l’application sur les nouvelles pratiques Spring Boot, monitorer l’utilisation des endpoints REST.
8. Packager et déployer une application Spring Boot
- Création d’un war pour un déploiement classique.
- Création d’un jar « self-contained » exécutable.
- Déploiement dans une image docker.
Travaux pratiques
Produire un jar auto-exécutable et le déployer sur une image docker.
9. Spring Security
- Définition d’un référentiel utilisateurs.
- Modes d’authentification (session, JWT).
- Sécurisation des routes.
- Tests d’une application sécurisée.
Travaux pratiques
Application de la sécurité sur le projet web.
10. Introduction à Spring Cloud et aux architecture micro-services
- Architecture distribuée et micro-services, patterns d’architecture micro-services.
- Tour d’horizon de Spring Cloud.
- Externaliser les configurations et gérer leurs versions avec Spring Cloud Config.
- Enregistrer et localiser dynamiquement des services avec Spring Cloud Netflix.
- Mettre en œuvre une répartition de charge avec Spring Cloud LoadBalancer.
- Créer une API Gateway avec ZUUL et sécuriser son accès avec Spring Security.
Travaux pratiques
Rétro-conception d’une application monolithique en architecture de micro-services.