Rappels sur la configuration Spring classique
- Configuration par fichiers XML, par annotations ou classes de configuration.
- Paramétrage de la configuration, utilisation des PropertyPlaceholder.
- Configuration de la couche de persistance, DataSource et EntityManagerFactory.
- Configuration de la couche métier et des transactions.
- Configuration de la couche web, Controller et RestController, Spring Security.
- Les tests unitaires et d’intégration : SpringTest, MockMvc.
Travaux pratiques
Appropriation d’une application Spring classique qui sera convertie en une application Spring Boot lors des chapitres suivants.
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
Identifications des starters correspondant aux besoins, production du squelette de l’application Spring Boot en devenir.
Gestion des dépendances et de l’auto-configuration
- 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.
- Création de ses propres classes d’auto-configuration.
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.
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).
- Configuration de la sécurité sur les API REST.
- Faciliter le développement à l’aide de Spring Boot DevTools.
Travaux pratiques
Mettre en œuvre les infrastructures techniques "embedded", maximiser l’auto-configuration.
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.
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.
Introduction à Spring Cloud et aux architectures 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.
- Dernière ligne enlevée
Travaux pratiques
Rétro-conception d’une application monolithique en architecture de micro-services.