GevoxxInsights All articles
Software engineering · Java

Spring Boot et les « starters » : comprendre la magie sans la subir

Auto-configuration, starters, convention plutôt que configuration : comment Spring Boot vous fait gagner un temps fou, et ce qui se passe réellement en coulisses.

Spring Boot et les « starters » : comprendre la magie sans la subir

Avant Spring Boot, démarrer un projet Spring impliquait des heures de configuration XML et de gestion fine des versions de dépendances. Spring Boot a renversé cela avec deux idées : les starters et l'auto-configuration. Résultat : une application web opérationnelle en quelques minutes. Voyons ce qui se cache derrière cette « magie ».

Les starters : des dépendances par thème

Un starter est une dépendance « chapeau » qui tire toutes les bibliothèques cohérentes pour une fonctionnalité, avec des versions déjà accordées entre elles. Au lieu d'assembler à la main une dizaine de jars compatibles, vous déclarez un seul artefact :

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

spring-boot-starter-web apporte Spring MVC, un serveur Tomcat embarqué, Jackson (JSON), la validation… tout ce qu'il faut pour une API REST. Autres starters courants : -data-jpa (persistance), -security (authentification), -validation, -mail, -actuator (supervision). Le parent BOM (spring-boot-starter-parent) gère les versions : vous ne les précisez plus, tout est aligné et testé ensemble.

L'auto-configuration : la convention plutôt que la configuration

La deuxième idée est plus subtile. Au démarrage, Spring Boot examine le classpath et configure automatiquement ce qu'il détecte. Il trouve le driver H2 ? Il configure une base en mémoire. Il voit spring-boot-starter-web ? Il lance un serveur web sur le port 8080. Ce mécanisme repose sur des classes annotées @Conditional : « si telle classe est présente et qu'aucun bean équivalent n'est déjà défini, alors configure ceci ».

La règle : des valeurs par défaut sensées, que vous ne surchargez que lorsque vous en avez besoin. On appelle cela « convention over configuration ».

Reprendre la main quand il le faut

L'auto-configuration n'est pas une boîte noire fermée. Vous gardez le contrôle à plusieurs niveaux :

  • application.yml — surcharger les propriétés (port, URL de base, pool de connexions…).
  • Définir votre propre bean — Spring Boot recule dès que vous fournissez le vôtre (grâce à @ConditionalOnMissingBean).
  • Diagnostiquer — lancez avec --debug pour voir le « Conditions Evaluation Report » : ce que Boot a configuré, et pourquoi.
# application.yml — surcharger sans code
server:
  port: 9000
spring:
  datasource:
    url: jdbc:postgresql://localhost/app

Le point d'entrée

Tout tient dans une classe minuscule. @SpringBootApplication combine trois annotations : @Configuration, @EnableAutoConfiguration et @ComponentScan.

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

Créer un projet en 30 secondes

Le site start.spring.io (Spring Initializr) génère un squelette prêt à l'emploi : choisissez le gestionnaire (Maven/Gradle), la version de Java, et cochez les starters voulus. Vous obtenez un projet qui démarre du premier coup — la meilleure façon de commencer.

En résumé

Spring Boot n'est pas magique : les starters assemblent des dépendances cohérentes, l'auto-configuration applique des défauts raisonnables selon ce qu'elle détecte, et vous reprenez la main dès que nécessaire via des propriétés ou vos propres beans. Comprendre ce contrat — défauts intelligents, surcharge facile — vous rend bien plus efficace et vous évite de « subir » le framework.

Sources et références