🛢️Parcours Fioul GroupéCours — Spring Boot, les bases (FR)
Accueil › Cours Spring Boot — les bases
🌱 Cours de base — en français

Spring Boot, les bases

Un cours court et progressif pour créer sa première application web avec Spring Boot, dans l'esprit des tutoriels simples : une notion par section, la syntaxe, un exemple et le résultat (réponse HTTP ou console). On construit petit à petit une mini-API de produits en Java.

1 Notion

Qu'est-ce que Spring Boot ?

Spring est un framework Java très répandu pour construire des applications d'entreprise. Spring Boot en est la version « prête à l'emploi » : il fournit un serveur web intégré (Tomcat), l'auto-configuration et des starters (paquets de dépendances tout prêts). Résultat : on écrit une API REST en quelques lignes, sans configuration lourde.

Les trois idées à retenir :

À retenir — avec Spring Boot, « lancer un serveur web » se résume à exécuter une classe Java. Pas d'installation de serveur externe.
2 Notion

Créer un projet

On génère un projet vierge sur Spring Initializr (start.spring.io), en choisissant Java, Maven et les dépendances utiles.

Réglages conseillés

Project   : Maven          Language : Java (21)
Packaging : Jar            Dependencies : Spring Web

Structure générée (l'essentiel)

src/main/java/com/exemple/demo/
    DemoApplication.java     // point d'entrée
src/main/resources/
    application.properties   // configuration
pom.xml                      // dépendances Maven
Astuce — le bouton Add Dependencies de Spring Initializr évite d'éditer le pom.xml à la main. On ajoutera plus tard Spring Data MongoDB, Validation, etc.
3 Notion

Lancer l'application

La classe principale, annotée @SpringBootApplication, démarre tout. On l'exécute depuis l'IDE ou en ligne de commande.

La classe de démarrage

@SpringBootApplication
public class DemoApplication {
    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }
}

Lancer en ligne de commande

mvn spring-boot:run

Résultat (console)

Tomcat started on port 8080 (http) Started DemoApplication in 1.8 seconds
À retenir — l'application écoute sur http://localhost:8080. @SpringBootApplication regroupe trois annotations : configuration, auto-configuration et scan des composants.
4 Notion

Premier contrôleur REST

Un contrôleur relie une URL à une méthode Java. @RestController déclare la classe ; @GetMapping associe une URL à une méthode répondant aux requêtes GET.

Exemple

@RestController
public class BonjourController {

    @GetMapping("/bonjour")
    public String bonjour() {
        return "Bonjour depuis Spring Boot !";
    }
}

Requête

GET http://localhost:8080/bonjour

Résultat

Bonjour depuis Spring Boot !
À retenir — pas besoin de configurer de « route » : l'annotation @GetMapping("/bonjour") suffit à créer l'URL.
5 Notion

Renvoyer du JSON

Si une méthode renvoie un objet (ou une liste), Spring le convertit automatiquement en JSON. On utilise volontiers un record Java, concis et immuable.

Un record produit

public record Produit(int id, String nom, double prix) {}

Le contrôleur

@RestController
public class ProduitController {

    @GetMapping("/produits")
    public List<Produit> lister() {
        return List.of(
            new Produit(1, "Fioul 500L", 620.0),
            new Produit(2, "Fioul 1000L", 1180.0)
        );
    }
}

Résultat (réponse JSON)

[ { "id": 1, "nom": "Fioul 500L", "prix": 620.0 }, { "id": 2, "nom": "Fioul 1000L", "prix": 1180.0 } ]
À retenir — la conversion objet ↔ JSON est automatique (bibliothèque Jackson, incluse dans le starter web). C'est le fondement d'une API REST.
6 Notion

Les paramètres d'URL

Deux façons de recevoir des valeurs : @PathVariable (dans le chemin) et @RequestParam (après le ?).

@PathVariable — une valeur dans le chemin

@GetMapping("/produits/{id}")
public String consulter(@PathVariable int id) {
    return "Produit demandé : " + id;
}
// GET /produits/2   →   "Produit demandé : 2"

@RequestParam — après le point d'interrogation

@GetMapping("/produits")
public String filtrer(@RequestParam String ville) {
    return "Filtre ville : " + ville;
}
// GET /produits?ville=Limoges   →   "Filtre ville : Limoges"
Quand utiliser quoi ? @PathVariable pour identifier une ressource précise (/produits/2) ; @RequestParam pour des options de filtre ou de recherche (?ville=…).
7 Notion

Recevoir des données (POST)

Pour créer une ressource, le client envoie un corps JSON en POST. @RequestBody transforme ce JSON en objet Java automatiquement.

Exemple

@PostMapping("/produits")
public String creer(@RequestBody Produit p) {
    return "Créé : " + p.nom() + " à " + p.prix() + " €";
}

Requête (corps JSON envoyé par le client)

POST http://localhost:8080/produits
Content-Type: application/json

{ "id": 3, "nom": "Fioul 2000L", "prix": 2300.0 }

Résultat

Créé : Fioul 2000L à 2300.0 €

Les principaux verbes HTTP et leurs annotations :

VerbeAnnotationRôle
GET@GetMappinglire
POST@PostMappingcréer
PUT@PutMappingmodifier
DELETE@DeleteMappingsupprimer
8 Notion

Architecture en couches & injection

On ne met pas la logique dans le contrôleur : on la délègue à un service. Spring crée et fournit ces objets tout seul : c'est l'injection de dépendances (le contrôleur ne fait pas new).

Le service (@Service)

@Service
public class ProduitService {
    public List<Produit> lister() {
        return List.of(new Produit(1, "Fioul 500L", 620.0));
    }
}

Le contrôleur reçoit le service (injection par constructeur)

@RestController
public class ProduitController {
    private final ProduitService service;

    public ProduitController(ProduitService service) {  // injecté par Spring
        this.service = service;
    }

    @GetMapping("/produits")
    public List<Produit> lister() { return service.lister(); }
}
À retenir — le trio Controller → Service → Repository est l'architecture standard. Chaque couche a un rôle : exposer (contrôleur), décider (service), accéder aux données (repository). Spring assemble le tout par injection.
9 Notion

La configuration

Le fichier application.properties (ou .yml) centralise les réglages : port, connexion à la base, etc.

application.properties

server.port=8080
spring.application.name=fioul-api
spring.data.mongodb.uri=mongodb://localhost:27017/fioul
Sécurité — une URI de base avec mot de passe ne doit jamais être écrite en clair ici dans un dépôt Git. On utilise une variable d'environnement : spring.data.mongodb.uri=${MONGODB_URI}.
10 Notion

Documenter avec Swagger

Une seule dépendance (springdoc-openapi) génère une interface web qui documente et permet de tester l'API depuis le navigateur.

La dépendance (pom.xml)

<dependency>
  <groupId>org.springdoc</groupId>
  <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
  <version>2.6.0</version>
</dependency>

Résultat — sans aucune configuration

Interface Swagger UI : http://localhost:8080/swagger-ui/index.html Description OpenAPI : http://localhost:8080/v3/api-docs
Le lien avec le projet — ces bases suffisent à construire l'API du fioul. Pour l'enchaînement complet couche par couche (entité → repository → DTO → service → contrôleur → validation → Swagger) appliqué au projet, voir le guide pas à pas.
+ Pour aller plus loin

Ressources Spring Boot

← Cours MongoDB