Adloun

Premiers pas avec Spring Boot

Cours · Spring Boot : écrire le serveur (école d'ingénieur), chapitre 1 · école d'ingénieur, informatique · le début du chapitre, la suite sur Adloun

À la fin du livre Vue, l'application de la Librairie du Campus affiche son catalogue, gère un panier et envoie des commandes. Mais les livres qu'elle montre viennent d'un petit programme JavaScript, serveur.mjs, écrit pour les besoins des exercices : ses données sont figées dans le code, une commande n'est enregistrée nulle part, et n'importe qui pourrait modifier le catalogue s'il savait le faire. Une vraie librairie a besoin d'un vrai serveur : qui garde ses données dans une base, vérifie tout ce qu'on lui envoie, protège ses opérations sensibles et tourne des mois sans s'arrêter.

Ce livre écrit ce serveur en Java, avec Spring Boot. Ce premier chapitre installe les outils, crée un projet, écrit un premier point d'entrée HTTP et suit le chemin d'une requête dans l'application. À la fin, notre serveur Java répond déjà à la première question que pose l'application Vue : « quels livres avez-vous ? ».

Objectifs du chapitre

  • Situer le serveur dans une application web et dire ce qu'apporte un framework comme Spring Boot.
  • Créer un projet avec Spring Initializr et en reconnaître chaque fichier.
  • Écrire un contrôleur REST qui répond en texte ou en JSON.
  • Lancer l'application, lire son journal de démarrage, l'interroger avec curl.
  • Suivre le trajet d'une requête : Tomcat, le dispatcher, le contrôleur, la conversion en JSON.
  • Changer le port, fabriquer un jar exécutable.

Les projets du chapitre sont dans code/ch1/ : le projet bonjour, la Librairie, les corrigés des exercices et un exemple volontairement faux. Tous les journaux et toutes les réponses montrés ont été produits en exécutant ces projets ; dans les journaux, on a retiré la date, le numéro de processus et le nom de l'application en tête de chaque ligne, et abrégé le chemin du dossier de travail en /livre.

1.1 Ce que fait un serveur web

Une application web est faite de deux programmes qui ne tournent pas au même endroit. Le client s'exécute dans le navigateur de chaque visiteur : c'est l'application Vue du livre précédent. Le serveur s'exécute sur une machine que la Librairie contrôle ; il garde les données, applique les règles et répond à tous les clients à la fois. Ils dialoguent par le protocole HTTP, que le livre JavaScript a présenté avec fetch : le client envoie une requête (une méthode comme GET ou POST, une adresse, des en-têtes, parfois un corps), le serveur renvoie une réponse (un code de statut, des en-têtes, un corps, le plus souvent en JSON).

Le serveur d'essai serveur.mjs faisait déjà ce travail, à la main : il découpait l'adresse de chaque requête, cherchait la route correspondante, lisait le corps, fabriquait le JSON, choisissait le statut. Un framework prend en charge cette mécanique : on écrit seulement ce qui est propre à l'application, et le framework appelle notre code au bon moment. C'est l'inversion de contrôle, que le chapitre 2 approfondira : ce n'est plus notre programme qui pilote, c'est le framework qui appelle nos méthodes.

Définition 1.1Spring, Spring Boot

Spring est un ensemble de bibliothèques Java pour écrire des applications serveur : un conteneur qui crée et relie les objets de l'application, un module web (Spring MVC), l'accès aux données, la sécurité, les tests. Spring Boot assemble ces bibliothèques avec des réglages par défaut raisonnables : on obtient une application qui démarre avec un serveur web intégré, sans configuration à écrire, et qu'on ajuste seulement là où les choix par défaut ne conviennent pas.

Repère historique : Spring et Spring Boot

En 2002, Rod Johnson publie un livre qui critique la lourdeur des serveurs d'application Java de l'époque et propose une alternative légère ; le code qui l'accompagne devient Spring, publié en 2003. Spring s'impose en quelques années, mais configurer une application demande encore beaucoup de XML. Spring Boot, en 2014, renverse la logique : des choix par défaut, un serveur intégré, un jar qu'on lance avec java -jar. En 2022, Spring Boot 3 suit le passage de Java EE à Jakarta EE (les paquets javax.* deviennent jakarta.*). Spring Boot 4, en 2025, découpe l'auto-configuration en modules plus fins et passe à Spring Framework 7 et Jackson 3. Ce livre utilise Spring Boot 4.1.1.

1.2 Installer les outils

La plateforme Adloun n'a pas d'atelier pour ce livre : un serveur Spring Boot ouvre un port réseau, lit des fichiers, parle à une base de données, ce qu'on ne fait pas dans un navigateur. Tout se passe sur votre ordinateur, avec :

Maven n'est pas à installer : chaque projet contient un petit script, mvnw (Maven wrapper), qui télécharge la bonne version de Maven au premier lancement. On vérifie le JDK :


$ java -version
openjdk version "21.0.7" 2025-04-15
OpenJDK Runtime Environment JBR-21.0.7+6-1020.35-nomod (build 21.0.7+6-b1020.35)
OpenJDK 64-Bit Server VM JBR-21.0.7+6-1020.35-nomod (build 21.0.7+6-b1020.35, mixed mode, sharing)

1.3 Créer un projet avec Spring Initializr

On ne crée pas un projet Spring Boot à la main : le site Spring Initializr le génère. On y choisit l'outil de construction (Maven), le langage (Java), la version de Spring Boot (4.1.1), les coordonnées du projet (groupe fr.librairie, artefact bonjour), la version de Java (21) et les dépendances : ici une seule, « Spring Web ». Le site est à l'adresse

start.spring.io

et la plupart des éditeurs l'intègrent dans leur assistant « nouveau projet ». Le même service répond aussi à une simple requête HTTP, ce qui permet de créer un projet depuis le terminal (-G place les paramètres -d dans l'adresse, -o nomme le fichier reçu) :


$ curl -G https://start.spring.io/starter.zip -o bonjour.zip \
    -d type=maven-project -d bootVersion=4.1.1 -d javaVersion=21 \
    -d groupId=fr.librairie -d artifactId=bonjour -d dependencies=web
$ unzip bonjour.zip -d bonjour

Voici les fichiers du projet bonjour du chapitre, une fois nos trois classes ajoutées :


$ find . -type f -not -path "./target/*" | sort
./.mvn/wrapper/maven-wrapper.properties
./mvnw
./mvnw.cmd
./pom.xml
./src/main/java/fr/librairie/bonjour/BonjourApplication.java
./src/main/java/fr/librairie/bonjour/BonjourController.java
./src/main/java/fr/librairie/bonjour/Heure.java
./src/main/java/fr/librairie/bonjour/HeureController.java
./src/main/resources/application.properties
./src/test/java/fr/librairie/bonjour/BonjourControllerTest.java

On y reconnaît la disposition standard de Maven : le code dans src/main/java, les ressources (fichiers de configuration) dans src/main/resources, les tests dans src/test/java. Le fichier central est pom.xml, qui décrit le projet et ses dépendances :


<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>4.1.1</version>
        <relativePath/>
    </parent>

    <groupId>fr.librairie</groupId>
    <artifactId>bonjour</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>bonjour</name>
    <description>Premier projet Spring Boot</description>

    <properties>
        <java.version>21</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-webmvc</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-webmvc-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

La suite du cours est sur Adloun

Le chapitre en entier, formules et figures comprises, avec le tuteur, les fiches, les QCM et les exercices.

Lire la suite du cours

En accès libre, sans inscription.

Exercices corrigés de ce chapitre

Lire la suite du cours →