MODULE 2 - Premiers Pas avec Spring Boot
Objectifs du Module
Ce module vous permettra de:
- Maîtriser l'utilisation de Spring Initializr pour créer des projets
- Comprendre la structure d'un projet Spring Boot
- Configurer votre environnement de développement (Visual Studio Code)
- Créer votre première application REST
- Utiliser les annotations de base de Spring Boot
Contenu du Module
Théorie
Chapitre 1: Spring Initializr
- Qu'est-ce que Spring Initializr
- Configuration du projet (Maven, Java, Spring Boot)
- Métadonnées et paramètres
- Gestion des dépendances et starters
- Génération et import du projet
- Alternatives (CLI, API, IDE)
Chapitre 2: Structure d'un Projet Spring Boot
- Arborescence complète d'un projet
- Rôle du fichier pom.xml
- Organisation des packages (Controller, Service, Repository, Model)
- Répertoires resources (static, templates)
- Configuration avec application.properties/yml
- Conventions de nommage
Chapitre 3: Configuration
- Fichiers application.properties et application.yml
- Propriétés Spring Boot communes
- Configuration de la base de données
- Configuration des logs
- Propriétés personnalisées avec @Value et @ConfigurationProperties
- Gestion des profiles (dev, test, prod)
- Variables d'environnement et sécurité
Chapitre 4: Annotations de Base
@SpringBootApplicationet ses composantes- Annotations de stéréotype:
@Component,@Service,@Repository @RestControllervs@Controller- Annotations de mapping HTTP:
@GetMapping,@PostMapping,@PutMapping,@DeleteMapping @RequestParam,@PathVariable,@RequestBody- Injection de dépendances avec
@Autowired
Chapitre 5: Introduction aux Repositories
- Qu'est-ce qu'un Repository Spring Data JPA
- Les 4 méthodes de base héritées de JpaRepository
- Conventions de nommage simples: findBy, And, Or
- Créer une entité JPA
- Architecture complète Controller → Service → Repository
- Exemples pratiques avec l'entité User
- Note: Contenu simplifié pour débutants. Les concepts avancés (jointures, JPQL, @Query) seront vus au Module 6
Travaux Pratiques
TP2.1: Application Greeting avec VS Code
Objectif: Créer votre première application Spring Boot REST
Contenu:
- Configuration de Spring Initializr
- Import du projet dans Visual Studio Code
- Création d'un contrôleur REST simple
- Test et débogage
- Résolution de problèmes courants
Durée estimée: 2-3 heures
Prérequis: JDK 17+, Maven, VS Code avec extensions Java
Niveau: Débutant
TP2.2: Base de Données H2 - Mémoire et Persistance
Objectif: Maîtriser H2 en mode mémoire et en mode fichier persistant
Contenu:
- Partie 1: H2 en mémoire (données temporaires)
- Partie 2: H2 persistante (données sur disque)
- Partie 3: Gestion avancée avec renommage de fichiers
- Différences entre les modes
- Configuration de schema.sql et data.sql
- Console H2
- 4 exercices pratiques
- Utilisation des 4 méthodes JPA de base (findById, findAll, save, deleteById)
Durée estimée: 3-4 heures
Prérequis: TP2.1 complété, Chapitre 5 (Repositories) lu
Niveau: Débutant
📚 Note Importante: Restructuration Pédagogique
Où sont TP3 et TP4?
Si vous cherchez les TPs avancés, ils ont été déplacés vers les modules appropriés pour une meilleure progression pédagogique:
TP3.1: Architecture CRUD → MODULE 3
- Nouveau nom: TP3.1 du Module 3
- Raison: Utilise des concepts avancés (Validation, ResponseEntity, Gestion d'erreurs)
- Prérequis ajoutés:
- Chapitre 1: Service Layer en détail
- Chapitre 2: Validation des données
- Chapitre 3: Gestion des erreurs HTTP
- Chapitre 4: Architecture 3 couches professionnelle
TP4.1: PostgreSQL → MODULE 4
- Nouveau nom: TP4.1 du Module 4
- Raison: Utilise des concepts de production (PostgreSQL, Lombok, Jakarta, DDL strategies)
- Prérequis ajoutés:
- Chapitre 1: PostgreSQL - Installation et configuration
- Chapitre 2: Jakarta vs Javax Persistence
- Chapitre 3: Hibernate et stratégies DDL
- Chapitre 4: Lombok
Pourquoi Ce Changement?
Analyse pédagogique:
TP3 (anciennement ici): 60% de concepts non enseignés
TP4 (anciennement ici): 80% de concepts non enseignés
Impact positif:
- ✅ Chaque TP a maintenant TOUTE la théorie nécessaire AVANT de le commencer
- ✅ Moins de frustration et de confusion
- ✅ Apprentissage plus progressif et efficace
- ✅ Meilleure préparation pour la production
Progression Recommandée
MODULE 2 (Bases)
├── 5 Chapitres théoriques
└── 2 TPs pratiques (TP2.1, TP2.2)
↓
MODULE 3 (Architecture Robuste)
├── 4 Chapitres théoriques
└── 1 TP (Architecture CRUD) ← Ancien TP3 du Module 2
↓
MODULE 4 (Production)
├── 4 Chapitres théoriques
└── 1 TP (PostgreSQL) ← Ancien TP4 du Module 2
Prérequis Techniques
Avant de commencer ce module, assurez-vous d'avoir:
Logiciels Requis
-
JDK 17 ou supérieur
- Téléchargement: Oracle JDK ou OpenJDK
-
Visual Studio Code
- Téléchargement: code.visualstudio.com
-
Extensions VS Code:
- Extension Pack for Java (Microsoft)
- Spring Boot Extension Pack (VMware)
- Maven for Java (Microsoft)
-
Maven 3.9+
- Consultez le TP1.2 : Installation de Maven 3.9.x pour un guide complet d'installation sur Windows, macOS et Linux
- Si Java n'est pas encore installé, consultez d'abord le TP1.1 : Installation de Java JDK 17
- Version 3.9+ recommandée pour stabilité avec Java 17+
Vérification de l'Installation
# Vérifier Java
java -version
# Vérifier Maven
mvn -version
Durée Estimée
Théorie: 6-8 heures (5 chapitres)
Pratique: 5-7 heures (TP2.1, TP2.2)
Total: 11-15 heures (2-3 séances de 4-6 heures)
Note: Le Module 2 a été simplifié pour se concentrer sur les fondamentaux. Les TPs avancés (CRUD Architecture, PostgreSQL) sont maintenant dans les Modules 3 et 4 avec la théorie appropriée.
Ressources Supplémentaires
Documentation Officielle
Tutoriels Recommandés
Critères de Réussite
À la fin de ce module, vous devriez être capable de:
- ✅ Créer un projet Spring Boot avec Spring Initializr
- ✅ Configurer Visual Studio Code pour le développement Java/Spring
- ✅ Créer et tester un contrôleur REST simple
- ✅ Comprendre la structure d'un projet Spring Boot
- ✅ Configurer application.properties et application.yml
- ✅ Utiliser les annotations de base (@RestController, @Service, @Repository)
- ✅ Créer des entités JPA simples
- ✅ Utiliser les 4 méthodes CRUD de base (findById, findAll, save, deleteById)
- ✅ Créer des méthodes de recherche simples (findBy, And, Or)
- ✅ Travailler avec H2 en mode mémoire et persistant
Ce que vous N'êtes PAS encore censé maîtriser (c'est dans les modules suivants):
- ❌ Architecture 3 couches complète (Module 3)
- ❌ Validation avancée (Module 3)
- ❌ Gestion des erreurs HTTP (Module 3)
- ❌ PostgreSQL en production (Module 4)
- ❌ Lombok (Module 4)
- ❌ Jointures JPA (Module 6)
Prochaines Étapes
Une fois ce module complété, vous serez prêt pour:
-
Module 3: Architecture en Couches et CRUD Complet
- Service Layer approfondi
- Validation des données (@Valid, @NotNull, @Size, etc.)
- Gestion des erreurs HTTP (ResponseEntity, codes de statut)
- Architecture 3 couches professionnelle
- TP3.1: CRUD Architecture (déplacé pour meilleure progression)
-
Module 4: Bases de Données en Production
- PostgreSQL - Installation et configuration
- Jakarta vs Javax Persistence
- Hibernate et DDL strategies
- Lombok pour réduire le code
- TP4.1: Migration PostgreSQL (déplacé pour meilleure progression)
-
Module 5: Spring Core - IoC et DI avancé
-
Module 6: Spring Data JPA Avancé (Jointures, JPQL, Optimisation)
📚 Pourquoi Cette Réorganisation?
Ancienne structure:
- Module 2 contenait 4 TPs dont 2 trop avancés
- TP3.1 et TP4.1 utilisaient des concepts non enseignés
- Frustration des étudiants
Nouvelle structure:
- ✅ Module 2: Bases uniquement (TP2.1, TP2.2)
- ✅ Module 3: CRUD avec théorie complète (TP3.1)
- ✅ Module 4: Production avec théorie complète (TP4.1)
💡 Résultat: Chaque TP a maintenant TOUTE la théorie nécessaire AVANT de le commencer!