CHAPITRE 3 : CREER SON PREMIER PROJET

Nous allons creer un projet, le lancer, et obtenir notre premiere reponse HTTP.

1. Spring Initializr

Rendez-vous sur start.spring.io. C'est l'outil officiel pour generer un projet.

ChampValeur conseillee
ProjectMaven
LanguageJava
Spring BootLa derniere version stable (sans SNAPSHOT ni M1)
Groupcom.pandacodeur
Artifactgestion-etudiants
PackagingJar
Java17 ou 21

Ajoutez une seule dependance pour l'instant : Spring Web.

Cliquez sur Generate, decompressez l'archive et ouvrez le dossier dans votre editeur.

2. Le fichier pom.xml

C'est la carte d'identite du projet : son nom, sa version de Java, et ses dependances.

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

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

Remarquez l'absence de numero de version : le parent Spring Boot les choisit pour vous, en garantissant leur compatibilite. C'est un gain de temps considerable.

3. La classe principale

@SpringBootApplication
public class GestionEtudiantsApplication {

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

L'annotation @SpringBootApplication en regroupe trois :

AnnotationRole
@ConfigurationCette classe peut definir des composants
@EnableAutoConfigurationActive l'auto-configuration
@ComponentScanCherche les composants dans ce package et ses sous-packages

Point important : le @ComponentScan explore le package de cette classe et uniquement ses sous-packages. Placer une classe en dehors la rend invisible pour Spring. C'est la cause numero un des « mon controleur ne repond pas ».

4. Lancer l'application

./mvnw spring-boot:run

# sous Windows
mvnw.cmd spring-boot:run

Vous pouvez aussi lancer la methode main depuis votre editeur. Dans la console, cherchez :

Tomcat started on port 8080
Started GestionEtudiantsApplication in 2.1 seconds

5. Votre premier controleur

Creez une classe BonjourController dans le meme package que la classe principale :

package com.pandacodeur.gestionetudiants;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class BonjourController {

    @GetMapping("/bonjour")
    public String bonjour(@RequestParam(defaultValue = "visiteur") String nom) {
        return "Bonjour " + nom + " !";
    }
}

Relancez, puis ouvrez :

http://localhost:8080/bonjour
http://localhost:8080/bonjour?nom=Awa

6. L'arborescence

gestion-etudiants/
├── src/
│   ├── main/
│   │   ├── java/com/pandacodeur/gestionetudiants/
│   │   │   ├── GestionEtudiantsApplication.java
│   │   │   └── BonjourController.java
│   │   └── resources/
│   │       ├── application.properties    configuration
│   │       ├── static/                   fichiers publics
│   │       └── templates/                pages HTML
│   └── test/                             les tests
├── pom.xml
└── mvnw

A retenir

  • Spring Initializr genere le projet ; pom.xml declare les dependances
  • @SpringBootApplication regroupe trois annotations
  • Spring ne voit que le package principal et ses sous-packages
  • @RestController + @GetMapping suffisent pour repondre en HTTP

Exercices d'application

Exercice 1. Creer le projetGenerez le projet gestion-etudiants avec Spring Web, lancez-le et verifiez le message « Started… » dans la console.
Exercice 2. Trois routesAjoutez trois routes : /date qui renvoie la date du jour, /calcul?a=3&b=4 qui renvoie la somme, et /salut/{nom} avec @PathVariable.
Exercice 3. Provoquer l'erreurDeplacez votre controleur dans un package situe en dehors du package principal. Relancez : la route ne repond plus. Expliquez pourquoi, puis remettez-le en place.

Cherchez avant de regarder la solution : c'est en butant sur les difficultes que l'on progresse.

Questions / Réponses

Aucune question. Soyez le premier à poser une question.
★ ★ ★ ★ ★
2 votes. Moyenne 5 sur 5.

Ajouter un commentaire

Anti-spam