Anotaciones de Configuración y Arranque
1. @SpringBootApplication
Propósito: Señala la clase principal de una aplicación Spring Boot, actuando como su punto de inicio.
Composición: Combina las anotaciones @Configuration, @EnableAutoConfiguration y @ComponentScan.
- @Configuration: Define una clase como fuente de beans de configuración.
- @EnableAutoConfiguration: Habilita la configuración automática basada en dependencias del proyecto.
- @ComponentScan: Busca y registra componentes de Spring en paquetes específicos.
Ejemplo de código:
Propósito: Marca una clase para definir beans de Spring mediante métodos anotados con @Bean.
Ejemplo:
3. @ComponentScan
Propósito: Indica los paquetes que deben ser examinados para encontrar componentes anotados.
Uso típico: Por defecto, escanea el paquete de la clase anotada y sus subpaquetes.
Ejemplo:
Propósito: Identifica una clase como un componente gestionado por Spring, susceptible de detección automática.
Ejemplo:
Propósito: Especialización de @Component para indicar capas de lógica de negocio.
Ejemplo:
Propósito: Especialización de @Component para componentes de acceso a datos, incluyendo manejo de excepciones de persistencia.
Ejemplo:
Propósito: Marca una clase como controlador en aplicaciones web Spring MVC.
Ejemplo:
Propósito: Combina @Controller y @ResponseBody para crear controladores RESTful que devuelven datos directamente.
Ejemplo:
9. @RequestMapping
Propósito: Asocia una URL o patrón de URL a un método manejador en un controlador.
Ejemplo:
Propósito: Simplifica el mapeo de solicitudes HTTP GET a un método.
Ejemplo:
Propósito: Mapea solicitudes HTTP POST a un método, comúnmente usado para crear recursos.
Ejemplo:
Propósito: Indica que el valor de retorno de un método debe serializarse directamente en el cuerpo de la respuesta HTTP.
Ejemplo:
Propósito: Vincula el cuerpo de una solicitud HTTP (por ejemplo, JSON) a un parámetro de método.
Ejemplo:
Propósito: Extrae valores de segmentos variables en la URL de la solicitud.
Ejemplo:
Propósito: Obtiene parámetros de consulta o datos de formulario de la solicitud.
Ejemplo:
16. @Entity
Propósito: Define una clase como entidad JPA, mapeada a una tabla de base de datos.
Ejemplo:
Propósito: Especifica el nombre de la tabla de base de datos asociada a una entidad.
Ejemplo:
18. @Value
Propósito: Inyecta valores desde fuentes externas como archivos de propiedades.
Ejemplo:
Propósito: Realiza la inyección de dependencias de manera automática.
Ejemplo:
Propósito: Declara un método en una clase de configuración que produce un bean de Spring.
Ejemplo:
Propósito: Controla la creación de un bean basado en condiciones específicas.
Ejemplo:
Propósito: Indica el bean preferido cuando múltiples implementaciones están disponibles.
Ejemplo:
Propósito: Especifica el nombre de un bean para inyección, usado con @Autowired.
Ejemplo:
Propósito: Retrasa la inicialización de un bean hasta su primer uso.
Ejemplo:
Propósito: Define el ámbito de vida de un bean (singleton, prototype, etc.).
Ejemplo:
26. @Data
Propósito: Genera automáticamente getters, setters, toString, equals y hashCode para una clase.
Ejemplo:
@Data public class Cliente { private Long id; private String nombre; private String correo; }
</div>Al compilar, Lombok crea los métodos estándar, reduciendo el código repetitivo.
### 27. @AllArgsConstructor
**Propósito:** Genera un constructor con todos los campos de la clase.
**Ejemplo:**
<div>```
import lombok.AllArgsConstructor;
@AllArgsConstructor
public class Direccion {
private String calle;
private String ciudad;
}
Propósito: Genera un constructor sin argumentos.
Ejemplo:
@NoArgsConstructor public class Configuracion { private String clave; }
</div></div>