Structure d’un Projet Spring Boot
Organisation, hiérarchie, conventions, configuration, starters et architecture propre pour bâtir des projets Spring Boot réellement maintenables.
Introduction
La structure d’un projet Spring Boot influence directement sa maintenabilité, son évolutivité et la qualité globale de l’architecture. Un projet bien organisé facilite la collaboration, la testabilité et la compréhension du domaine métier.
Dans ce chapitre, vous découvrirez comment organiser vos packages, structurer votre domaine, configurer proprement vos composants et mettre en place une base solide pour un projet professionnel.
Lexique essentiel
Dépendance prête à l’emploi regroupant configuration et libs associées.
Hook pour exécuter du code au démarrage.
Annotation générique pour un bean Spring.
Classe déclarant des beans et configurations explicites.
Organisation du code centrée sur le métier (recommandée).
Organisation technique en couches (à limiter dans de grands projets).
Structure recommandée pour un projet Spring Boot
Spring Boot n’impose pas de structure stricte, mais encourage une organisation claire autour du domaine métier plutôt que des couches techniques. Cette approche améliore la lisibilité et réduit le couplage.
Voici un exemple de structure professionnelle :
src/main/java/com.example.app
│
├── application
│ ├── controllers
│ ├── dto
│ └── handlers
│
├── domain
│ ├── model
│ ├── services
│ └── events
│
├── infrastructure
│ ├── repository
│ ├── configuration
│ └── clients
│
└── AppApplication.java
L’objectif est de séparer clairement : l’application (ce qui expose ou orchestre), le domaine (la logique métier), et l’infrastructure (le technique).
Configuration & conventions
Un projet professionnel doit éviter la configuration “magique”. Les propriétés doivent être explicites, centralisées et structurées via des classes annotées @ConfigurationProperties.
@ConfigurationProperties(prefix = "app.email")
public record EmailProperties(
String host,
int port,
String sender
) {}
- Centraliser la configuration dans un package dédié.
- Éviter les propriétés dispersées dans plusieurs fichiers.
- Préférer @ConfigurationProperties à @Value.
- Construire une architecture orientée métier (package-by-feature).
Quiz : Structure Spring Boot
-
Q1. Quelle approche est la plus adaptée pour un projet complexe ?
- A. package-by-layer
- B. package-by-feature ✔
- C. tout mettre dans un seul package
-
Q2. Quelle annotation permet de déclarer une configuration propre ?
- A. @Bean
- B. @Configuration ✔
- C. @Entity
Exercice d’application
Créez la structure complète d’un module « gestion des commandes » :
— Quels packages métier devez-vous créer ?
— Quelle partie va dans application / domain / infrastructure ?
— Quels DTO, services et modèles devez-vous définir ?
Résumé
Une bonne structure Spring Boot repose sur des principes simples : code orienté métier, séparation claire des responsabilités, configuration propre et architecture évolutive. Cette fondation garantit maintenabilité et robustesse.
