Module 17: Référence Complète des Annotations Spring Boot
Objectifs du Module
Ce module est une référence exhaustive de toutes les annotations Spring Boot que vous rencontrerez en développement. Il couvre:
- Les annotations du noyau Spring (IoC, DI, configuration)
- Les annotations Web et REST
- Les annotations de persistance (JPA/Hibernate)
- Les annotations de sécurité, de test et les annotations avancées
Plan du Module
| # | Chapitre | Contenu |
|---|---|---|
| 1 | Annotations Core Spring | @Component, @Service, @Repository, @Configuration, @Bean, @Autowired, @Value, @Profile, @Scope, @Conditional... |
| 2 | Annotations Web et REST | @RestController, @RequestMapping, @GetMapping, @PostMapping, @RequestBody, @PathVariable, @ResponseStatus, @CrossOrigin... |
| 3 | Annotations Data et JPA | @Entity, @Table, @Id, @GeneratedValue, @Column, @OneToMany, @ManyToOne, @Query, @Transactional, @Modifying... |
| 4 | Annotations Security, Test et Avancées | @EnableWebSecurity, @PreAuthorize, @SpringBootTest, @MockBean, @Scheduled, @Async, @EnableCaching, @Validated... |
| 5 | Dictionnaire Complet A-Z | 120+ annotations classées par ordre alphabétique avec descriptions courtes — référence rapide |
Comment Utiliser Ce Module
Guide de référence
Ce module est conçu comme un dictionnaire d'annotations. Vous n'avez pas besoin de le lire du début à la fin. Utilisez-le comme référence lorsque vous rencontrez une annotation inconnue ou que vous cherchez l'annotation adaptée à votre besoin.
Parcours d'une Requête HTTP dans Spring Boot
Vue globale : du Client à la Base de Données
Flux détaillé avec annotations
Architecture en couches et leurs annotations
Exemple concret : GET /api/users/1
Exemple concret : POST /api/products (création)
Légende des couleurs
| Couleur | Couche | Annotations principales |
|---|---|---|
| 🔵 Bleu | Client | Requête HTTP / Réponse JSON |
| 🔴 Rouge | Sécurité | @EnableWebSecurity, JwtFilter, @PreAuthorize |
| 🟢 Vert | Controller | @RestController, @GetMapping, @PostMapping |
| 🟡 Jaune | Service | @Service, @Transactional, logique métier |
| 🟠 Orange | Repository | @Repository, JpaRepository, @Query |
| 🟣 Violet | Base de données | @Entity, @Table, @Id, @Column |
Annotations par Catégorie
Spring Boot Annotations
├── Core Spring
│ ├── Stéréotypes: @Component, @Service, @Repository, @Controller
│ ├── Configuration: @Configuration, @Bean, @PropertySource
│ ├── Injection: @Autowired, @Qualifier, @Value, @Inject
│ └── Lifecycle: @PostConstruct, @PreDestroy, @Scope
│
├── Web / REST
│ ├── Contrôleurs: @RestController, @Controller
│ ├── Mapping: @GetMapping, @PostMapping, @PutMapping, @DeleteMapping, @PatchMapping
│ ├── Paramètres: @RequestParam, @PathVariable, @RequestBody, @RequestHeader
│ └── Réponses: @ResponseBody, @ResponseStatus, @ExceptionHandler
│
├── Data / JPA
│ ├── Entités: @Entity, @Table, @Id, @GeneratedValue, @Column
│ ├── Relations: @OneToOne, @OneToMany, @ManyToOne, @ManyToMany
│ ├── Requêtes: @Query, @NamedQuery, @Modifying
│ └── Transactions: @Transactional, @EnableJpaRepositories
│
├── Security
│ ├── Config: @EnableWebSecurity, @EnableMethodSecurity
│ └── Autorisation: @PreAuthorize, @PostAuthorize, @Secured
│
├── Test
│ ├── Boot: @SpringBootTest, @WebMvcTest, @DataJpaTest
│ ├── Mock: @MockBean, @SpyBean
│ └── Config: @TestConfiguration, @ActiveProfiles
│
└── Avancées
├── Async: @Async, @Scheduled, @EnableScheduling
├── Cache: @Cacheable, @CacheEvict, @EnableCaching
├── Validation: @Valid, @NotNull, @Size, @Email
└── Boot: @SpringBootApplication, @ConditionalOnProperty
Prochaine Étape
➡️ Chapitre 1: Annotations Core Spring