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 Orientée Aspect avec Spring
- Présentation de la Programmation Orientée Aspect
- Les Aspects qui sont intégrés dans le framework Spring: Transactions, Security, Caching…
- Mode de fonctionnement de la Programmation Orientée Aspect: 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
- 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
- Introduction aux Composants Spring Cloud pour les microservices
La certification “Spring-certified professional”
- Presentation de la certification “Spring-certified professional”
- Démarches pour passer la certification
- Utilisation des “Spring Profiles” pour définir des contextes Développement / Tests / Production
Spring Security
- Exposition/Restriction de l'accès aux endpoints avec les requestMatchers
- Rôles et Utilisateurs
- Persistance des utilisateurs en base de données
- Introduction à l'authentification par token JWT
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
- Utilisation de Spring Boot Admin
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