Aller au contenu principal

Chapitre 1: Spring Initializr

Introduction​

Spring Initializr est un générateur de projets web qui permet de créer rapidement un projet Spring Boot avec les dépendances et la configuration de base nécessaires. C'est le point de départ recommandé pour tout nouveau projet Spring Boot.

Objectifs du Chapitre​

À la fin de ce chapitre, vous serez capable de:

  • Utiliser Spring Initializr pour créer des projets Spring Boot
  • Comprendre les différentes options de configuration
  • Choisir les bonnes dépendances pour votre projet
  • Générer et importer un projet dans votre IDE

Qu'est-ce que Spring Initializr?​

Définition​

Spring Initializr est un outil de bootstrap qui génère la structure de base d'un projet Spring Boot. Il:

  • Crée la structure de répertoires Maven ou Gradle
  • Génère le fichier pom.xml ou build.gradle avec les dépendances
  • Ajoute la classe principale avec @SpringBootApplication
  • Configure les fichiers de ressources de base

Accès à Spring Initializr​

Il existe plusieurs façons d'accéder à Spring Initializr:

  1. Interface Web: https://start.spring.io/
  2. IDE intégré: IntelliJ IDEA, VS Code avec extensions Spring
  3. Spring CLI: Ligne de commande
  4. API REST: Pour l'automatisation

Interface Web de Spring Initializr​

URL d'Accès​

https://start.spring.io/

Sections Principales​

L'interface est divisée en plusieurs sections:


Configuration du Projet​

1. Project Type (Type de Projet)​

Choix disponibles:

TypeDescriptionUtilisation
MavenOutil de build XMLRecommandé pour débutants, très documenté
GradleOutil de build Groovy/Kotlin DSLPlus moderne, plus rapide, syntaxe concise

Recommandation: Maven pour ce cours (plus standard dans l'industrie Java)

2. Language (Langage)​

Choix disponibles:

LangageDescriptionNiveau
JavaLangage principal de SpringRecommandé
KotlinLangage moderne de JetBrainsAvancé
GroovyLangage dynamiqueMoins courant

Recommandation: Java (langage de ce cours)

3. Spring Boot Version​

Format de version: X.Y.Z

  • X: Version majeure (changements majeurs)
  • Y: Version mineure (nouvelles fonctionnalités)
  • Z: Version patch (corrections de bugs)

Exemple:

3.2.0

Types de versions:

TypeSuffixeSignificationUtilisation
ReleaseAucunVersion stableProduction
Snapshot-SNAPSHOTVersion en développementDéveloppement uniquement
Milestone-M1, -M2Version betaTests
Release Candidate-RC1Candidat à la releaseTests finaux

Recommandation: Toujours choisir la dernière version stable (sans suffixe)


Métadonnées du Projet​

Structure des Métadonnées​

1. Group​

Définition: Identifiant de l'organisation ou de l'équipe (convention Maven)

Format: Nom de domaine inversé

Exemples:

com.example          # Exemple générique
com.inskillflow # Organisation inskillflow
org.springframework # Spring Framework

Convention: Utiliser votre domaine inversé ou com.example pour les exercices

2. Artifact​

Définition: Identifiant unique du projet

Format: Lettres minuscules, tirets pour les espaces

Exemples:

greeting-app
user-management-service
e-commerce-backend

Convention: Nom descriptif en kebab-case

3. Name​

Définition: Nom d'affichage du projet

Format: Nom lisible par l'humain

Exemples:

Greeting Application
User Management Service
E-Commerce Backend

4. Description​

Définition: Description courte du projet

Exemple:

Application Spring Boot pour gérer les salutations

5. Package Name​

Définition: Package Java racine du projet

Format: Automatiquement généré: {group}.\{artifact\}

Exemple:

com.example.greeting

Structure résultante:

src/main/java/com/example/greeting/
├── GreetingApplication.java
├── controller/
├── service/
└── model/

6. Packaging​

Choix disponibles:

TypeDescriptionUtilisation
JARJava Archive (standalone)Applications Spring Boot avec serveur embarqué
WARWeb ArchiveDéploiement sur serveur externe (Tomcat, etc.)

Recommandation: JAR (Spring Boot embarque son propre serveur)

Différence:

7. Java Version​

Versions supportées par Spring Boot 3.x:

VersionSupportRecommandation
Java 17LTSRecommandé
Java 21LTSTrès récent
Java 11Ancienne LTSNon supporté par Spring Boot 3.x

Note importante: Spring Boot 3.x requiert minimum Java 17


Gestion des Dépendances​

Qu'est-ce qu'une Dépendance?​

Une dépendance (ou dependency) est une bibliothèque externe que votre projet utilise.

Starters Spring Boot​

Spring Boot utilise le concept de "starters" - des dépendances groupées.

Format d'un starter:

spring-boot-starter-{technologie}

Catégories de Dépendances​

1. Web​

StarterDescriptionUtilisation
Spring WebREST APIs, Spring MVCApplications web REST
Spring Reactive WebWebFlux (réactif)Applications hautement scalables

2. SQL (Bases de données relationnelles)​

StarterDescription
Spring Data JPAORM avec Hibernate
JDBC APIAccès SQL bas niveau
MyBatis FrameworkMapping SQL/Java

3. NoSQL​

StarterDescription
Spring Data MongoDBBase de données documents
Spring Data RedisCache en mémoire
Spring Data ElasticsearchRecherche full-text

4. Sécurité​

StarterDescription
Spring SecurityAuthentification et autorisation
OAuth2 ClientLogin social (Google, Facebook)
OAuth2 Resource ServerAPI protégée

5. SQL Drivers​

DriverBase de données
PostgreSQL DriverPostgreSQL
MySQL DriverMySQL/MariaDB
H2 DatabaseBase en mémoire (tests)
Oracle DriverOracle Database

6. I/O​

StarterDescription
ValidationValidation des données (@Valid)
Spring Web ServicesSOAP Web Services
Spring for Apache KafkaMessaging Kafka

7. Developer Tools​

ToolDescriptionUtilisation
Spring Boot DevToolsRechargement automatiqueDéveloppement
LombokRéduction du code boilerplateProductivité
Spring Configuration ProcessorAutocomplétion des configsDéveloppement

Dépendances pour un Projet REST Simple​

Pour une application REST basique, choisissez:

✅ Spring Web
✅ Spring Boot DevTools

Dépendances pour une Application Complète​

Pour une application avec base de données:

✅ Spring Web
✅ Spring Data JPA
✅ PostgreSQL Driver (ou autre)
✅ Validation
✅ Spring Boot DevTools
✅ Lombok (optionnel)

Génération et Téléchargement​

Options de Génération​

Boutons disponibles:

  1. EXPLORE (Ctrl + Space)

    • Prévisualiser la structure du projet
    • Voir le contenu du pom.xml
    • Vérifier les fichiers générés
  2. SHARE

    • Générer un lien partageable
    • Partager la configuration avec l'équipe
  3. GENERATE (Ctrl + Enter)

    • Télécharger le projet en ZIP
    • Prêt à être décompressé et importé

Structure du ZIP Généré​

greeting-app.zip
└── greeting/
├── .mvn/ # Wrapper Maven
├── src/
│ ├── main/
│ │ ├── java/
│ │ │ └── com/example/greeting/
│ │ │ └── GreetingApplication.java
│ │ └── resources/
│ │ ├── static/ # Fichiers statiques (CSS, JS, images)
│ │ ├── templates/ # Templates (Thymeleaf)
│ │ └── application.properties
│ └── test/
│ └── java/
│ └── com/example/greeting/
│ └── GreetingApplicationTests.java
├── .gitignore
├── mvnw # Maven wrapper (Unix)
├── mvnw.cmd # Maven wrapper (Windows)
├── pom.xml # Configuration Maven
└── HELP.md

Import dans un IDE​

Option 1: Visual Studio Code​

Étapes:

  1. Décompresser le ZIP
  2. VS Code → File → Open Folder
  3. Sélectionner le dossier greeting
  4. Attendre l'import Maven automatique
  5. Extensions requises:
    • Extension Pack for Java
    • Spring Boot Extension Pack

Option 2: IntelliJ IDEA​

Étapes:

  1. Décompresser le ZIP
  2. IntelliJ → File → Open
  3. Sélectionner le dossier greeting
  4. IntelliJ détecte automatiquement le projet Maven
  5. Attendre l'indexation

Option 3: Eclipse/Spring Tool Suite (STS)​

Étapes:

  1. Décompresser le ZIP
  2. Eclipse → File → Import
  3. Maven → Existing Maven Projects
  4. Sélectionner le dossier greeting
  5. Finish

Alternatives à l'Interface Web​

1. Spring Initializr dans VS Code​

Installation:

  • Extension: Spring Initializr Java Support

Utilisation:

  1. Ctrl + Shift + P
  2. Taper: "Spring Initializr: Create a Maven Project"
  3. Suivre les prompts

2. Spring CLI​

Installation:

# macOS
brew install spring-boot

# Linux/Windows
# Télécharger depuis: https://docs.spring.io/spring-boot/docs/current/reference/html/getting-started.html#getting-started-installing-the-cli

Utilisation:

spring init \
--dependencies=web,data-jpa,postgresql \
--name=greeting \
--group-id=com.example \
--artifact-id=greeting \
greeting-app

3. API REST de Spring Initializr​

URL de base:

https://start.spring.io

Exemple avec curl:

curl https://start.spring.io/starter.zip \
-d dependencies=web,data-jpa \
-d name=greeting \
-d groupId=com.example \
-d artifactId=greeting \
-o greeting.zip

Exercices Pratiques​

Exercice 1: Créer un Projet Simple​

Objectif: Créer un projet REST simple

Instructions:

  1. Allez sur https://start.spring.io/
  2. Configurez:
    • Type: Maven
    • Java: 17
    • Group: com.example
    • Artifact: hello-rest
  3. Ajoutez: Spring Web
  4. Générez et téléchargez
  5. Importez dans VS Code

Exercice 2: Créer un Projet avec Base de Données​

Objectif: Créer un projet avec JPA

Instructions:

  1. Allez sur https://start.spring.io/
  2. Configurez:
    • Type: Maven
    • Java: 17
    • Group: com.example
    • Artifact: user-manager
  3. Ajoutez:
    • Spring Web
    • Spring Data JPA
    • PostgreSQL Driver
    • Validation
  4. Générez et explorez le pom.xml

Exercice 3: Analyser un pom.xml​

Objectif: Comprendre les dépendances générées

Instructions:

  1. Générez un projet avec Spring Web
  2. Ouvrez le pom.xml
  3. Identifiez:
    • Le parent Spring Boot
    • Le starter web
    • Le plugin Maven Spring Boot
  4. Listez toutes les dépendances transitives

Questions de Révision​

  1. Qu'est-ce que Spring Initializr?

  2. Quelle est la différence entre Maven et Gradle?

  3. Que signifie "starter" dans Spring Boot?

  4. Quelle est la convention pour le Group ID?

  5. Pourquoi choisir JAR plutôt que WAR pour Spring Boot?

  6. Quelle est la version Java minimale pour Spring Boot 3.x?

  7. À quoi sert Spring Boot DevTools?

  8. Quelle dépendance est nécessaire pour créer des REST APIs?


Résumé du Chapitre​

Points Clés​

  • Spring Initializr génère rapidement des projets Spring Boot
  • Accessible via web, IDE, CLI ou API
  • Configuration en 3 sections: Projet, Métadonnées, Dépendances
  • Les "starters" groupent des dépendances cohérentes
  • JAR est le packaging recommandé pour Spring Boot
  • Java 17+ est requis pour Spring Boot 3.x

Bonnes Pratiques​

  • Utiliser des versions stables de Spring Boot
  • Choisir uniquement les dépendances nécessaires
  • Suivre les conventions de nommage Maven
  • Utiliser DevTools en développement
  • Versionner le code dès la création

Prochaines Étapes​

Dans le chapitre suivant, nous explorerons en détail:

Chapitre 2: Structure d'un Projet Spring Boot

  • Organisation des packages
  • Rôle de chaque fichier
  • Conventions de nommage
  • Architecture en couches

Retour au Module 2