Anotaciones estándar de Java
@Override: Indica que un método sobrescribe uno de la superclase.
@Deprecated: Marca un método, clase o campo como obsoleto.
@SuppressWarnings: Evita que el compilador muestre advertencias.
@SafeVarargs: Indica que un método con varargs no causa problemas de tipos.
@FunctionalInterface: Indica que la interfaz debe tener exactamente un método abstracto.
Meta-anotaciones
@Target: Define en qué elementos se puede aplicar una anotación.
@Retention: Define en qué momento está disponible la anotación.
@Documented: Hace que la anotación aparezca en el Javadoc.
@Inherited: Indica que una anotación en una superclase se hereda en sus subclases.
@Repeatable: Permite aplicar la misma anotación varias veces a un mismo elemento.
JUnit (Pruebas unitarias)
@Test: Marca un método como caso de prueba.
@BeforeEach: Método que se ejecuta antes de cada prueba.
@AfterEach: Método que se ejecuta después de cada prueba.
@BeforeAll: Método que se ejecuta antes de todas las pruebas.
@AfterAll: Método que se ejecuta después de todas las pruebas.
@Disabled: Desactiva un test sin eliminarlo.
@ParameterizedTest: Permite ejecutar un test varias veces con diferentes valores.
Spring Framework
@Component: Declara una clase como un bean de Spring.
@Service: Marca una clase como servicio.
@Repository: Marca una clase de acceso a datos.
@Controller: Define un controlador web MVC.
@RestController: Combina @Controller + @ResponseBody para APIs REST.
@RequestMapping: Asigna rutas HTTP a un método o clase.
@GetMapping, @PostMapping, @PutMapping, @DeleteMapping: Variantes específicas de @RequestMapping.
@Autowired: Inyección automática de dependencias.
@Qualifier: Especifica qué bean inyectar cuando hay varios candidatos.
@Value: Inyecta valores desde application.properties.
@Configuration: Define una clase de configuración de Spring.
@Bean: Declara un método que devuelve un bean.
@Scope: Define el ciclo de vida del bean.
@Transactional: Maneja transacciones en métodos o clases.
@EnableAutoConfiguration: Habilita configuración automática (Spring Boot).
@SpringBootApplication: Punto de entrada de una app Spring Boot.
JPA/Hibernate
@Entity: Declara una clase como entidad de base de datos.
@Table: Define la tabla asociada a la entidad.
@Id: Indica la clave primaria.
@GeneratedValue: Estrategia de generación de la clave primaria.
@Column: Configura el nombre de columna y restricciones.
@OneToOne, @OneToMany, @ManyToOne, @ManyToMany: Relacionan entidades entre sí.
@JoinColumn: Define la columna de unión en una relación.
@Transient: Campo que no se guarda en la base de datos.
@Lob: Campo grande (CLOB/BLOB).
@Enumerated: Indica que un enum se guarda como texto o número.
Otras útiles
@NotNull, @Size, @Min, @Max: Validaciones de Bean Validation.
@JsonProperty, @JsonIgnore, @JsonInclude: Manejo de JSON con Jackson.
@Slf4j (Lombok): Genera automáticamente un logger.
@Data (Lombok): Genera getters, setters, equals, hashCode y toString.
@Builder (Lombok): Implementa patrón Builder.