Módulo 17: Referencia Completa de Anotaciones Spring Boot
Objetivos del Módulo
Este módulo es una referencia exhaustiva de todas las anotaciones de Spring Boot que encontrará en el desarrollo. Cubre:
- Las anotaciones del núcleo de Spring (IoC, DI, configuración)
- Las anotaciones Web y REST
- Las anotaciones de persistencia (JPA/Hibernate)
- Las anotaciones de seguridad, de prueba y anotaciones avanzadas
Plan del Módulo
| # | Capítulo | Contenido |
|---|---|---|
| 1 | Anotaciones Core Spring | @Component, @Service, @Repository, @Configuration, @Bean, @Autowired, @Value, @Profile, @Scope, @Conditional... |
| 2 | Anotaciones Web y REST | @RestController, @RequestMapping, @GetMapping, @PostMapping, @RequestBody, @PathVariable, @ResponseStatus, @CrossOrigin... |
| 3 | Anotaciones Data y JPA | @Entity, @Table, @Id, @GeneratedValue, @Column, @OneToMany, @ManyToOne, @Query, @Transactional, @Modifying... |
| 4 | Anotaciones Security, Test y Avanzadas | @EnableWebSecurity, @PreAuthorize, @SpringBootTest, @MockBean, @Scheduled, @Async, @EnableCaching, @Validated... |
| 5 | Diccionario Completo A-Z | 120+ anotaciones ordenadas alfabéticamente con descripciones cortas — referencia rápida |
Cómo Utilizar Este Módulo
Guía de referencia
Este módulo está diseñado como un diccionario de anotaciones. No necesita leerlo de principio a fin. Úselo como referencia cuando encuentre una anotación desconocida o cuando busque la anotación adecuada para su necesidad.
Recorrido de una Solicitud HTTP en Spring Boot
Vista global: del Cliente a la Base de Datos
Flujo detallado con anotaciones
Arquitectura en capas y sus anotaciones
Ejemplo concreto: GET /api/users/1
Ejemplo concreto: POST /api/products (creación)
Leyenda de colores
| Color | Capa | Anotaciones principales |
|---|---|---|
| 🔵 Azul | Cliente | Solicitud HTTP / Respuesta JSON |
| 🔴 Rojo | Seguridad | @EnableWebSecurity, JwtFilter, @PreAuthorize |
| 🟢 Verde | Controller | @RestController, @GetMapping, @PostMapping |
| 🟡 Amarillo | Service | @Service, @Transactional, lógica de negocio |
| 🟠 Naranja | Repository | @Repository, JpaRepository, @Query |
| 🟣 Violeta | Base de datos | @Entity, @Table, @Id, @Column |
Anotaciones por Categoría
Spring Boot Annotations
├── Core Spring
│ ├── Estereotipos: @Component, @Service, @Repository, @Controller
│ ├── Configuración: @Configuration, @Bean, @PropertySource
│ ├── Inyección: @Autowired, @Qualifier, @Value, @Inject
│ └── Ciclo de vida: @PostConstruct, @PreDestroy, @Scope
│
├── Web / REST
│ ├── Controladores: @RestController, @Controller
│ ├── Mapping: @GetMapping, @PostMapping, @PutMapping, @DeleteMapping, @PatchMapping
│ ├── Parámetros: @RequestParam, @PathVariable, @RequestBody, @RequestHeader
│ └── Respuestas: @ResponseBody, @ResponseStatus, @ExceptionHandler
│
├── Data / JPA
│ ├── Entidades: @Entity, @Table, @Id, @GeneratedValue, @Column
│ ├── Relaciones: @OneToOne, @OneToMany, @ManyToOne, @ManyToMany
│ ├── Consultas: @Query, @NamedQuery, @Modifying
│ └── Transacciones: @Transactional, @EnableJpaRepositories
│
├── Security
│ ├── Config: @EnableWebSecurity, @EnableMethodSecurity
│ └── Autorización: @PreAuthorize, @PostAuthorize, @Secured
│
├── Test
│ ├── Boot: @SpringBootTest, @WebMvcTest, @DataJpaTest
│ ├── Mock: @MockBean, @SpyBean
│ └── Config: @TestConfiguration, @ActiveProfiles
│
└── Avanzadas
├── Async: @Async, @Scheduled, @EnableScheduling
├── Cache: @Cacheable, @CacheEvict, @EnableCaching
├── Validación: @Valid, @NotNull, @Size, @Email
└── Boot: @SpringBootApplication, @ConditionalOnProperty
Próximo Paso
➡️ Capítulo 1: Anotaciones Core Spring