Aller au contenu principal

Chapitre 5: Dictionnaire Complet des Annotations (A-Z)

Référence rapide de toutes les annotations Spring Boot, classées par ordre alphabétique. Pour les exemples de code détaillés, consultez les chapitres 1 à 4.


A​

AnnotationDescription
@ActiveProfilesActive des profils Spring spécifiques pour les tests unitaires. Permet de charger application-test.yml par exemple.
@After(JUnit 4) Exécute du code après chaque méthode de test.
@AfterClass(JUnit 4) Exécute du code après toutes les méthodes de test d'une classe.
@AfterEach(JUnit 5) Exécute du code après chaque méthode de test. Remplace @After.
@AsyncExécute une méthode de manière asynchrone dans un thread séparé. Nécessite @EnableAsync.
@AutoConfigureDataJpaConfigure automatiquement JPA pour un test unitaire.
@AutoConfigureJsonTestersConfigure automatiquement les outils de sérialisation/désérialisation JSON pour les tests.
@AutoConfigureMockMvcConfigure automatiquement l'objet MockMvc pour un test unitaire.
@AutoConfigureWebTestClientConfigure automatiquement le WebTestClient pour les tests WebFlux.
@AutowiredInjecte automatiquement une dépendance (bean Spring) dans une classe. Préférer l'injection par constructeur.

B​

AnnotationDescription
@BeanDéclare une méthode qui retourne un objet géré par le conteneur Spring. Utilisée dans les classes @Configuration.
@Before(JUnit 4) Exécute du code avant chaque méthode de test.
@BeforeClass(JUnit 4) Exécute du code avant toutes les méthodes de test d'une classe.
@BeforeEach(JUnit 5) Exécute du code avant chaque méthode de test. Remplace @Before.

C​

AnnotationDescription
@CacheableMet en cache le résultat d'une méthode. Les appels suivants retournent le résultat du cache.
@CacheConfigConfigure les paramètres de cache (nom, durée de vie, taille max) pour une classe entière.
@CacheEvictSupprime une ou toutes les entrées du cache quand la méthode est appelée.
@CachePutMet à jour le cache avec le résultat de la méthode, sans jamais utiliser le cache existant.
@CircuitBreaker(Spring Cloud) Protège une méthode contre les échecs répétés en limitant les appels quand le service est en panne.
@ColumnConfigure le mapping d'une propriété JPA vers une colonne de base de données (nom, nullable, unique, longueur).
@ComponentMarque une classe comme un bean Spring générique, détecté automatiquement par le component scan.
@ComponentScanScanne les packages pour détecter automatiquement les classes annotées @Component, @Service, @Repository, etc.
@ConditionalConditionne la création d'un bean en fonction d'une condition personnalisée.
@ConditionalOnClassCrée un bean uniquement si une classe spécifique est présente dans le classpath.
@ConditionalOnMissingBeanCrée un bean uniquement si aucun autre bean du même type n'existe déjà.
@ConditionalOnPropertyCrée un bean uniquement si une propriété a une certaine valeur dans la configuration.
@ConfigurationMarque une classe de configuration Spring contenant des méthodes @Bean.
@ConfigurationPropertiesLie un groupe de propriétés du fichier de configuration à un objet Java (ex: app.mail.host).
@ControllerMarque une classe comme contrôleur Spring MVC qui retourne des vues (templates HTML).
@ControllerAdviceDéfinit un conseiller global pour tous les contrôleurs (gestion centralisée des exceptions, binding, etc.).
@CrossOriginAutorise les requêtes HTTP cross-origin (CORS) depuis des domaines spécifiques ou tous les domaines.

D​

AnnotationDescription
@DataJpaTestTest spécialisé qui charge uniquement la couche JPA (repositories, EntityManager, BDD en mémoire).
@DeleteMappingRaccourci pour @RequestMapping(method = DELETE). Mappe une méthode à une requête HTTP DELETE.
@Disabled(JUnit 5) Désactive temporairement un test unitaire sans le supprimer du code.

E​

AnnotationDescription
@EnableAsyncActive l'exécution asynchrone dans l'application. Nécessaire pour que @Async fonctionne.
@EnableCachingActive la mise en cache dans l'application. Nécessaire pour que @Cacheable fonctionne.
@EnableConfigurationPropertiesActive la liaison automatique des propriétés de configuration à des objets @ConfigurationProperties.
@EnableJmsActive le support JMS (Java Message Service) pour la messagerie dans l'application.
@EnableJpaRepositoriesActive le support des repositories Spring Data JPA. Configuré automatiquement par Spring Boot.
@EnableSchedulingActive la planification des tâches. Nécessaire pour que @Scheduled fonctionne.
@EnableWebMvcActive la configuration Spring MVC. Rarement nécessaire car Spring Boot l'active automatiquement.
@EnableWebSecurityActive la configuration personnalisée de Spring Security.
@EnableMethodSecurityActive la sécurité au niveau des méthodes (@PreAuthorize, @PostAuthorize, @Secured).
@EntityMarque une classe comme entité JPA, mappée à une table en base de données.
@EnumeratedDéfinit comment un enum Java est stocké en BDD : STRING (texte) ou ORDINAL (nombre).
@EventListenerÉcoute les événements Spring (démarrage de l'application, événements custom, etc.).
@ExceptionHandlerGère une exception spécifique dans un contrôleur ou un @ControllerAdvice. Retourne une réponse d'erreur personnalisée.
@ExtendWith(JUnit 5) Étend les fonctionnalités des tests avec des extensions (ex: SpringExtension, MockitoExtension).

F​

AnnotationDescription
@Fallback(Spring Cloud) Fournit une méthode de secours quand une méthode @CircuitBreaker est en panne.
@FlywayTestTeste les migrations de base de données Flyway dans les tests d'intégration.
@Formula(Hibernate) Définit une colonne calculée côté SQL, sans colonne physique en base.

G​

AnnotationDescription
@GeneratedValueDéfinit la stratégie de génération automatique de la clé primaire (IDENTITY, SEQUENCE, UUID, AUTO).
@GetMappingRaccourci pour @RequestMapping(method = GET). Mappe une méthode à une requête HTTP GET.

I​

AnnotationDescription
@IdMarque un champ comme clé primaire d'une entité JPA.
@ImportImporte d'autres classes de configuration dans une classe @Configuration.
@InitBinderPersonnalise la liaison de données entre les requêtes HTTP et les objets Java (conversion, validation, formatage).

J​

AnnotationDescription
@JoinColumnDéfinit la colonne de clé étrangère pour une relation JPA (@ManyToOne, @OneToOne).
@JoinTableDéfinit la table de jointure pour une relation @ManyToMany (nom de la table, colonnes de jointure).
@JmsListenerDéfinit une méthode qui écoute les messages JMS sur une file d'attente ou un topic.
@JsonFormatPersonnalise le format de sérialisation JSON (dates, nombres). Ex: @JsonFormat(pattern = "yyyy-MM-dd").
@JsonIgnoreExclut une propriété de la sérialisation/désérialisation JSON.
@JsonIncludeContrôle quelles propriétés sont incluses dans le JSON (ex: exclure les valeurs null).
@JsonPropertyRenomme une propriété dans le JSON. Ex: @JsonProperty("full_name") pour un champ fullName.
@JsonSubTypesDéfinit les sous-types pour la désérialisation polymorphique JSON.
@JsonTestTest spécialisé pour la sérialisation/désérialisation JSON uniquement.
@JsonTypeInfoAjoute des informations de type dans le JSON pour permettre la désérialisation polymorphique.
@JsonViewFiltre les propriétés JSON selon la vue demandée (ex: vue publique vs vue admin).

L​

AnnotationDescription
@LazyRetarde l'initialisation d'un bean jusqu'à sa première utilisation. Améliore le temps de démarrage.
@LobIndique un champ de type Large Object : CLOB (texte long) ou BLOB (binaire).

M​

AnnotationDescription
@ManyToManyDéfinit une relation plusieurs-à-plusieurs entre deux entités JPA. Utilise une table de jointure.
@ManyToOneDéfinit une relation plusieurs-à-un. Le côté "Many" porte la clé étrangère.
@MessageMapping(WebSocket/STOMP) Mappe une méthode à une destination de messagerie.
@MessagingGateway(Spring Integration) Définit une interface de passerelle pour envoyer des messages.
@MockBeanRemplace un bean Spring par un mock Mockito dans un test.
@MockMvcInjecte une instance MockMvc pour simuler des requêtes HTTP dans les tests.
@ModelAttributeLie les paramètres d'une requête HTTP à un objet Java. Utilisé aussi pour ajouter des attributs au modèle MVC.
@ModifyingIndique qu'une méthode @Query exécute un UPDATE ou DELETE (pas un SELECT).

N​

AnnotationDescription
@NamedQueryDéfinit une requête JPQL nommée directement sur une entité.
@NamedQueriesRegroupe plusieurs @NamedQuery sur une même entité.

O​

AnnotationDescription
@OneToManyDéfinit une relation un-à-plusieurs entre deux entités JPA. Le côté "One" est le parent.
@OneToOneDéfinit une relation un-à-un entre deux entités JPA.
@OrderDéfinit l'ordre de priorité d'un bean. Plus le nombre est petit, plus la priorité est haute.

P​

AnnotationDescription
@PatchMappingRaccourci pour @RequestMapping(method = PATCH). Mise à jour partielle d'une ressource.
@PathVariableExtrait une variable depuis le chemin de l'URL. Ex: /users/\{id\} → @PathVariable Long id.
@PostAuthorizeVérifie les autorisations après l'exécution d'une méthode (peut vérifier la valeur retournée).
@PostConstructExécute une méthode juste après l'injection de toutes les dépendances du bean.
@PostMappingRaccourci pour @RequestMapping(method = POST). Création d'une nouvelle ressource.
@PreAuthorizeVérifie les autorisations avant l'exécution d'une méthode. Supporte les expressions SpEL.
@PreDestroyExécute une méthode juste avant la destruction du bean (nettoyage, fermeture de connexions).
@PrimaryDéfinit le bean par défaut quand plusieurs beans du même type existent.
@ProfileActive un bean ou une configuration uniquement pour certains profils (dev, test, prod).
@PutMappingRaccourci pour @RequestMapping(method = PUT). Remplacement complet d'une ressource.

Q​

AnnotationDescription
@QualifierSpécifie quel bean injecter quand plusieurs beans du même type existent.
@QueryDéfinit une requête JPQL ou SQL native personnalisée sur une méthode de repository.

R​

AnnotationDescription
@RepositoryMarque une classe comme couche d'accès aux données. Active la traduction des exceptions SQL en exceptions Spring.
@RequestBodyDésérialise le corps de la requête HTTP (JSON) en objet Java.
@RequestHeaderExtrait la valeur d'un en-tête HTTP (Authorization, Content-Type, User-Agent, etc.).
@RequestMappingAnnotation de base pour mapper une URL à un contrôleur ou une méthode. Peut spécifier la méthode HTTP.
@RequestParamExtrait un paramètre de la query string. Ex: /search?name=Java → @RequestParam String name.
@RequestPartExtrait une partie d'une requête HTTP multipart (fichiers, images uploadés).
@ResponseBodyForce le retour d'une méthode en JSON/XML directement dans le corps de la réponse HTTP.
@ResponseStatusDéfinit le code HTTP retourné par une méthode (200, 201, 204, 404, etc.) ou une exception.
@RestClientTestTest spécialisé pour les clients REST. Charge uniquement la configuration client.
@RestControllerCombinaison de @Controller + @ResponseBody. Chaque méthode retourne du JSON directement.
@RestControllerAdviceCombinaison de @ControllerAdvice + @ResponseBody. Gestion globale des exceptions pour les API REST.
@Retryable(Spring Retry) Réessaie automatiquement une méthode en cas d'échec (ex: erreur réseau ou BDD).
@RolesAllowed(JSR-250) Spécifie les rôles autorisés pour une méthode. Alternative standard à @Secured.

S​

AnnotationDescription
@ScheduledPlanifie l'exécution périodique d'une méthode (fixedRate, fixedDelay, cron). Nécessite @EnableScheduling.
@ScopeDéfinit la portée d'un bean : singleton (défaut), prototype, request, session, application.
@SecuredSpécifie les rôles requis pour accéder à une méthode. Plus simple que @PreAuthorize.
@SendTo(WebSocket/STOMP) Spécifie la destination de réponse pour un message WebSocket.
@ServiceMarque une classe comme couche de logique métier. Détecté par le component scan.
@SessionAttributesStocke des attributs du modèle dans la session HTTP entre les requêtes.
@SessionScopeDéfinit la portée d'un bean comme session HTTP (un bean par session utilisateur).
@SpyBeanEnveloppe un vrai bean avec un spy Mockito dans les tests (appels réels sauf ceux stubés).
@SpringBootApplicationPoint d'entrée de l'application. Combine @Configuration, @EnableAutoConfiguration et @ComponentScan.
@SpringBootTestCharge le contexte Spring complet pour les tests d'intégration.
@SqlExécute des scripts SQL avant ou après un test pour préparer ou nettoyer la base de données.

T​

AnnotationDescription
@TablePersonnalise le nom de la table, le schéma, les contraintes d'unicité et les index pour une entité JPA.
@Test(JUnit) Marque une méthode comme test unitaire.
@TestConfigurationFournit une configuration Spring spécifique aux tests (beans de test, mocks).
@Timeout(JUnit 5) Définit un délai maximum pour l'exécution d'un test. Le test échoue si le délai est dépassé.
@TransactionalGère les transactions BDD. Commit si succès, rollback si exception. readOnly = true optimise les lectures.
@TransactionalEventListenerÉcoute un événement Spring et l'exécute seulement après le commit (ou rollback) de la transaction.
@TransientExclut un champ de la persistance JPA (pas de colonne en base de données).

V​

AnnotationDescription
@ValidActive la validation Bean Validation sur un objet (@NotNull, @Size, @Email, etc.).
@ValidatedVariante Spring de @Valid avec support des groupes de validation.
@ValueInjecte une valeur depuis le fichier de configuration. Ex: @Value("${app.name}"). Supporte les valeurs par défaut et SpEL.
@ValueSource(JUnit 5) Fournit des valeurs d'entrée à un test paramétré.

W​

AnnotationDescription
@WebFluxTestTest spécialisé pour les contrôleurs WebFlux (programmation réactive).
@WebMvcTestTest spécialisé qui charge uniquement la couche contrôleur MVC (pas de BDD, pas de services réels).
@WebTestClientInjecte un WebTestClient pour simuler des requêtes HTTP dans les tests WebFlux.

Annotations de Validation (Bean Validation)​

AnnotationDescription
@NotNullLe champ ne peut pas être null.
@NotEmptyLe champ ne peut pas être null ni vide (String, Collection, Map).
@NotBlankLe champ ne peut pas être null, vide ou contenir uniquement des espaces.
@Size(min, max)La taille doit être comprise entre min et max (String, Collection).
@Min(value)La valeur numérique doit être supérieure ou égale à value.
@Max(value)La valeur numérique doit être inférieure ou égale à value.
@EmailLe champ doit être un format d'adresse email valide.
@Pattern(regexp)Le champ doit correspondre à l'expression régulière donnée.
@PositiveLe nombre doit être strictement positif (> 0).
@PositiveOrZeroLe nombre doit être positif ou zéro (>= 0).
@NegativeLe nombre doit être strictement négatif (< 0).
@PastLa date doit être dans le passé.
@FutureLa date doit être dans le futur.
@DecimalMinLa valeur décimale doit être supérieure ou égale au minimum.
@DecimalMaxLa valeur décimale doit être inférieure ou égale au maximum.

Statistiques​

En résumé

Ce dictionnaire couvre 120+ annotations réparties en :

  • Core Spring : ~25 annotations (IoC, DI, configuration, lifecycle)
  • Web / REST : ~20 annotations (mapping, paramètres, réponses, erreurs)
  • Data / JPA : ~20 annotations (entités, relations, requêtes, transactions)
  • JSON / Jackson : ~7 annotations (format, filtre, ignore)
  • Security : ~7 annotations (config, autorisation)
  • Cache : ~5 annotations (cacheable, evict, put, config)
  • Async / Scheduling : ~5 annotations
  • Test : ~25 annotations (JUnit, Spring Test, mocks)
  • Validation : ~15 annotations (Bean Validation)
  • Messaging : ~5 annotations (JMS, WebSocket)
  • Cloud / Resilience : ~3 annotations (CircuitBreaker, Retry, Fallback)

⬅️ Retour au Module 17 | ⬅️ Retour à l'accueil