Saltar al contenido principal

Capítulo 5: Diccionario Completo de Anotaciones (A-Z)

Referencia rápida de todas las anotaciones de Spring Boot, ordenadas alfabéticamente. Para ejemplos de código detallados, consulte los capítulos 1 a 4.


A​

AnotaciónDescripción
@ActiveProfilesActiva perfiles específicos de Spring para pruebas unitarias. Permite cargar application-test.yml, por ejemplo.
@After(JUnit 4) Ejecuta código después de cada método de prueba.
@AfterClass(JUnit 4) Ejecuta código después de todos los métodos de prueba de una clase.
@AfterEach(JUnit 5) Ejecuta código después de cada método de prueba. Reemplaza a @After.
@AsyncEjecuta un método de manera asíncrona en un hilo separado. Requiere @EnableAsync.
@AutoConfigureDataJpaConfigura automáticamente JPA para una prueba unitaria.
@AutoConfigureJsonTestersConfigura automáticamente las herramientas de serialización/deserialización JSON para pruebas.
@AutoConfigureMockMvcConfigura automáticamente el objeto MockMvc para una prueba unitaria.
@AutoConfigureWebTestClientConfigura automáticamente el WebTestClient para pruebas WebFlux.
@AutowiredInyecta automáticamente una dependencia (bean de Spring) en una clase. Se recomienda la inyección por constructor.

B​

AnotaciónDescripción
@BeanDeclara un método que retorna un objeto gestionado por el contenedor de Spring. Se utiliza en clases @Configuration.
@Before(JUnit 4) Ejecuta código antes de cada método de prueba.
@BeforeClass(JUnit 4) Ejecuta código antes de todos los métodos de prueba de una clase.
@BeforeEach(JUnit 5) Ejecuta código antes de cada método de prueba. Reemplaza a @Before.

C​

AnotaciónDescripción
@CacheableAlmacena en caché el resultado de un método. Las llamadas siguientes retornan el resultado desde la caché.
@CacheConfigConfigura los parámetros de caché (nombre, tiempo de vida, tamaño máximo) para toda una clase.
@CacheEvictElimina una o todas las entradas de la caché cuando se llama al método.
@CachePutActualiza la caché con el resultado del método, sin usar nunca la caché existente.
@CircuitBreaker(Spring Cloud) Protege un método contra fallos repetidos limitando las llamadas cuando el servicio está caído.
@ColumnConfigura el mapeo de una propiedad JPA a una columna de base de datos (nombre, nullable, unique, longitud).
@ComponentMarca una clase como un bean genérico de Spring, detectado automáticamente por el component scan.
@ComponentScanEscanea los paquetes para detectar automáticamente las clases anotadas con @Component, @Service, @Repository, etc.
@ConditionalCondiciona la creación de un bean según una condición personalizada.
@ConditionalOnClassCrea un bean solo si una clase específica está presente en el classpath.
@ConditionalOnMissingBeanCrea un bean solo si no existe ya otro bean del mismo tipo.
@ConditionalOnPropertyCrea un bean solo si una propiedad tiene un cierto valor en la configuración.
@ConfigurationMarca una clase de configuración de Spring que contiene métodos @Bean.
@ConfigurationPropertiesVincula un grupo de propiedades del archivo de configuración a un objeto Java (ej: app.mail.host).
@ControllerMarca una clase como controlador Spring MVC que retorna vistas (plantillas HTML).
@ControllerAdviceDefine un asesor global para todos los controladores (gestión centralizada de excepciones, binding, etc.).
@CrossOriginPermite solicitudes HTTP cross-origin (CORS) desde dominios específicos o todos los dominios.

D​

AnotaciónDescripción
@DataJpaTestPrueba especializada que carga solo la capa JPA (repositories, EntityManager, BDD en memoria).
@DeleteMappingAtajo para @RequestMapping(method = DELETE). Mapea un método a una solicitud HTTP DELETE.
@Disabled(JUnit 5) Desactiva temporalmente una prueba unitaria sin eliminarla del código.

E​

AnotaciónDescripción
@EnableAsyncActiva la ejecución asíncrona en la aplicación. Necesario para que funcione @Async.
@EnableCachingActiva el uso de caché en la aplicación. Necesario para que funcione @Cacheable.
@EnableConfigurationPropertiesActiva la vinculación automática de propiedades de configuración a objetos @ConfigurationProperties.
@EnableJmsActiva el soporte JMS (Java Message Service) para mensajería en la aplicación.
@EnableJpaRepositoriesActiva el soporte de repositories de Spring Data JPA. Configurado automáticamente por Spring Boot.
@EnableSchedulingActiva la planificación de tareas. Necesario para que funcione @Scheduled.
@EnableWebMvcActiva la configuración de Spring MVC. Rara vez necesario porque Spring Boot lo activa automáticamente.
@EnableWebSecurityActiva la configuración personalizada de Spring Security.
@EnableMethodSecurityActiva la seguridad a nivel de métodos (@PreAuthorize, @PostAuthorize, @Secured).
@EntityMarca una clase como entidad JPA, mapeada a una tabla en la base de datos.
@EnumeratedDefine cómo se almacena un enum Java en la base de datos: STRING (texto) o ORDINAL (número).
@EventListenerEscucha eventos de Spring (inicio de la aplicación, eventos personalizados, etc.).
@ExceptionHandlerManeja una excepción específica en un controlador o un @ControllerAdvice. Retorna una respuesta de error personalizada.
@ExtendWith(JUnit 5) Extiende las funcionalidades de las pruebas con extensiones (ej: SpringExtension, MockitoExtension).

F​

AnotaciónDescripción
@Fallback(Spring Cloud) Proporciona un método alternativo cuando un método @CircuitBreaker falla.
@FlywayTestPrueba las migraciones de base de datos Flyway en pruebas de integración.
@Formula(Hibernate) Define una columna calculada a nivel SQL, sin columna física en la base de datos.

G​

AnotaciónDescripción
@GeneratedValueDefine la estrategia de generación automática de la clave primaria (IDENTITY, SEQUENCE, UUID, AUTO).
@GetMappingAtajo para @RequestMapping(method = GET). Mapea un método a una solicitud HTTP GET.

I​

AnotaciónDescripción
@IdMarca un campo como clave primaria de una entidad JPA.
@ImportImporta otras clases de configuración en una clase @Configuration.
@InitBinderPersonaliza la vinculación de datos entre solicitudes HTTP y objetos Java (conversión, validación, formateo).

J​

AnotaciónDescripción
@JoinColumnDefine la columna de clave foránea para una relación JPA (@ManyToOne, @OneToOne).
@JoinTableDefine la tabla de unión para una relación @ManyToMany (nombre de la tabla, columnas de unión).
@JmsListenerDefine un método que escucha mensajes JMS en una cola o un topic.
@JsonFormatPersonaliza el formato de serialización JSON (fechas, números). Ej: @JsonFormat(pattern = "yyyy-MM-dd").
@JsonIgnoreExcluye una propiedad de la serialización/deserialización JSON.
@JsonIncludeControla qué propiedades se incluyen en el JSON (ej: excluir valores null).
@JsonPropertyRenombra una propiedad en el JSON. Ej: @JsonProperty("full_name") para un campo fullName.
@JsonSubTypesDefine los subtipos para la deserialización polimórfica JSON.
@JsonTestPrueba especializada solo para serialización/deserialización JSON.
@JsonTypeInfoAñade información de tipo en el JSON para permitir la deserialización polimórfica.
@JsonViewFiltra las propiedades JSON según la vista solicitada (ej: vista pública vs vista admin).

L​

AnotaciónDescripción
@LazyRetrasa la inicialización de un bean hasta su primer uso. Mejora el tiempo de arranque.
@LobIndica un campo de tipo Large Object: CLOB (texto largo) o BLOB (binario).

M​

AnotaciónDescripción
@ManyToManyDefine una relación muchos-a-muchos entre dos entidades JPA. Utiliza una tabla de unión.
@ManyToOneDefine una relación muchos-a-uno. El lado "Many" lleva la clave foránea.
@MessageMapping(WebSocket/STOMP) Mapea un método a un destino de mensajería.
@MessagingGateway(Spring Integration) Define una interfaz de gateway para enviar mensajes.
@MockBeanReemplaza un bean de Spring por un mock de Mockito en una prueba.
@MockMvcInyecta una instancia de MockMvc para simular solicitudes HTTP en pruebas.
@ModelAttributeVincula los parámetros de una solicitud HTTP a un objeto Java. También se usa para añadir atributos al modelo MVC.
@ModifyingIndica que un método @Query ejecuta un UPDATE o DELETE (no un SELECT).

N​

AnotaciónDescripción
@NamedQueryDefine una consulta JPQL nombrada directamente en una entidad.
@NamedQueriesAgrupa varias @NamedQuery en una misma entidad.

O​

AnotaciónDescripción
@OneToManyDefine una relación uno-a-muchos entre dos entidades JPA. El lado "One" es el padre.
@OneToOneDefine una relación uno-a-uno entre dos entidades JPA.
@OrderDefine el orden de prioridad de un bean. Cuanto menor el número, mayor la prioridad.

P​

AnotaciónDescripción
@PatchMappingAtajo para @RequestMapping(method = PATCH). Actualización parcial de un recurso.
@PathVariableExtrae una variable desde la ruta de la URL. Ej: /users/\{id\} → @PathVariable Long id.
@PostAuthorizeVerifica las autorizaciones después de la ejecución de un método (puede verificar el valor retornado).
@PostConstructEjecuta un método justo después de la inyección de todas las dependencias del bean.
@PostMappingAtajo para @RequestMapping(method = POST). Creación de un nuevo recurso.
@PreAuthorizeVerifica las autorizaciones antes de la ejecución de un método. Soporta expresiones SpEL.
@PreDestroyEjecuta un método justo antes de la destrucción del bean (limpieza, cierre de conexiones).
@PrimaryDefine el bean por defecto cuando existen varios beans del mismo tipo.
@ProfileActiva un bean o una configuración solo para ciertos perfiles (dev, test, prod).
@PutMappingAtajo para @RequestMapping(method = PUT). Reemplazo completo de un recurso.

Q​

AnotaciónDescripción
@QualifierEspecifica qué bean inyectar cuando existen varios beans del mismo tipo.
@QueryDefine una consulta JPQL o SQL nativa personalizada en un método de repository.

R​

AnotaciónDescripción
@RepositoryMarca una clase como capa de acceso a datos. Activa la traducción de excepciones SQL a excepciones de Spring.
@RequestBodyDeserializa el cuerpo de la solicitud HTTP (JSON) en un objeto Java.
@RequestHeaderExtrae el valor de una cabecera HTTP (Authorization, Content-Type, User-Agent, etc.).
@RequestMappingAnotación base para mapear una URL a un controlador o método. Puede especificar el método HTTP.
@RequestParamExtrae un parámetro de la query string. Ej: /search?name=Java → @RequestParam String name.
@RequestPartExtrae una parte de una solicitud HTTP multipart (archivos, imágenes subidas).
@ResponseBodyFuerza el retorno de un método en JSON/XML directamente en el cuerpo de la respuesta HTTP.
@ResponseStatusDefine el código HTTP retornado por un método (200, 201, 204, 404, etc.) o una excepción.
@RestClientTestPrueba especializada para clientes REST. Carga solo la configuración del cliente.
@RestControllerCombinación de @Controller + @ResponseBody. Cada método retorna JSON directamente.
@RestControllerAdviceCombinación de @ControllerAdvice + @ResponseBody. Gestión global de excepciones para APIs REST.
@Retryable(Spring Retry) Reintenta automáticamente un método en caso de fallo (ej: error de red o BDD).
@RolesAllowed(JSR-250) Especifica los roles permitidos para un método. Alternativa estándar a @Secured.

S​

AnotaciónDescripción
@ScheduledPrograma la ejecución periódica de un método (fixedRate, fixedDelay, cron). Requiere @EnableScheduling.
@ScopeDefine el ámbito de un bean: singleton (por defecto), prototype, request, session, application.
@SecuredEspecifica los roles requeridos para acceder a un método. Más simple que @PreAuthorize.
@SendTo(WebSocket/STOMP) Especifica el destino de respuesta para un mensaje WebSocket.
@ServiceMarca una clase como capa de lógica de negocio. Detectado por el component scan.
@SessionAttributesAlmacena atributos del modelo en la sesión HTTP entre solicitudes.
@SessionScopeDefine el ámbito de un bean como sesión HTTP (un bean por sesión de usuario).
@SpyBeanEnvuelve un bean real con un spy de Mockito en pruebas (llamadas reales salvo las stub).
@SpringBootApplicationPunto de entrada de la aplicación. Combina @Configuration, @EnableAutoConfiguration y @ComponentScan.
@SpringBootTestCarga el contexto completo de Spring para pruebas de integración.
@SqlEjecuta scripts SQL antes o después de una prueba para preparar o limpiar la base de datos.

T​

AnotaciónDescripción
@TablePersonaliza el nombre de la tabla, el esquema, las restricciones de unicidad y los índices para una entidad JPA.
@Test(JUnit) Marca un método como prueba unitaria.
@TestConfigurationProporciona una configuración de Spring específica para pruebas (beans de prueba, mocks).
@Timeout(JUnit 5) Define un tiempo máximo para la ejecución de una prueba. La prueba falla si se supera el tiempo.
@TransactionalGestiona las transacciones de base de datos. Commit si tiene éxito, rollback si hay excepción. readOnly = true optimiza las lecturas.
@TransactionalEventListenerEscucha un evento de Spring y lo ejecuta solo después del commit (o rollback) de la transacción.
@TransientExcluye un campo de la persistencia JPA (sin columna en la base de datos).

V​

AnotaciónDescripción
@ValidActiva la validación Bean Validation sobre un objeto (@NotNull, @Size, @Email, etc.).
@ValidatedVariante de Spring de @Valid con soporte de grupos de validación.
@ValueInyecta un valor desde el archivo de configuración. Ej: @Value("${app.name}"). Soporta valores por defecto y SpEL.
@ValueSource(JUnit 5) Proporciona valores de entrada a una prueba parametrizada.

W​

AnotaciónDescripción
@WebFluxTestPrueba especializada para controladores WebFlux (programación reactiva).
@WebMvcTestPrueba especializada que carga solo la capa de controlador MVC (sin BDD, sin servicios reales).
@WebTestClientInyecta un WebTestClient para simular solicitudes HTTP en pruebas WebFlux.

Anotaciones de Validación (Bean Validation)​

AnotaciónDescripción
@NotNullEl campo no puede ser null.
@NotEmptyEl campo no puede ser null ni vacío (String, Collection, Map).
@NotBlankEl campo no puede ser null, vacío ni contener solo espacios.
@Size(min, max)El tamaño debe estar entre min y max (String, Collection).
@Min(value)El valor numérico debe ser mayor o igual a value.
@Max(value)El valor numérico debe ser menor o igual a value.
@EmailEl campo debe tener un formato de dirección de correo electrónico válido.
@Pattern(regexp)El campo debe coincidir con la expresión regular dada.
@PositiveEl número debe ser estrictamente positivo (> 0).
@PositiveOrZeroEl número debe ser positivo o cero (>= 0).
@NegativeEl número debe ser estrictamente negativo (< 0).
@PastLa fecha debe estar en el pasado.
@FutureLa fecha debe estar en el futuro.
@DecimalMinEl valor decimal debe ser mayor o igual al mínimo.
@DecimalMaxEl valor decimal debe ser menor o igual al máximo.

Estadísticas​

En resumen

Este diccionario cubre 120+ anotaciones distribuidas en:

  • Core Spring: ~25 anotaciones (IoC, DI, configuración, ciclo de vida)
  • Web / REST: ~20 anotaciones (mapeo, parámetros, respuestas, errores)
  • Data / JPA: ~20 anotaciones (entidades, relaciones, consultas, transacciones)
  • JSON / Jackson: ~7 anotaciones (formato, filtro, ignore)
  • Security: ~7 anotaciones (configuración, autorización)
  • Cache: ~5 anotaciones (cacheable, evict, put, config)
  • Async / Scheduling: ~5 anotaciones
  • Test: ~25 anotaciones (JUnit, Spring Test, mocks)
  • Validation: ~15 anotaciones (Bean Validation)
  • Messaging: ~5 anotaciones (JMS, WebSocket)
  • Cloud / Resilience: ~3 anotaciones (CircuitBreaker, Retry, Fallback)

⬅️ Volver al Módulo 17 | ⬅️ Volver al inicio