Las anotaciones en Spring Boot son una parte fundamental del framework, ya que permiten configurar y gestionar los componentes de la aplicación de manera declarativa. En este tema, exploraremos las anotaciones más comunes y su uso en el desarrollo de aplicaciones Spring Boot.
- ¿Qué son las Anotaciones?
Las anotaciones en Java son una forma de agregar metadatos a las clases, métodos, variables y otros elementos del código. En Spring Boot, las anotaciones se utilizan para definir el comportamiento de los componentes y configurar la aplicación.
- Anotaciones Comunes en Spring Boot
2.1. @SpringBootApplication
La anotación @SpringBootApplication es una combinación de tres anotaciones:
@Configuration: Indica que la clase es una fuente de definiciones de beans.@EnableAutoConfiguration: Habilita la configuración automática de Spring Boot.@ComponentScan: Escanea los paquetes en busca de componentes, configuraciones y servicios.
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class MySpringBootApplication {
public static void main(String[] args) {
SpringApplication.run(MySpringBootApplication.class, args);
}
}2.2. @RestController
La anotación @RestController se utiliza para definir una clase como un controlador RESTful. Combina las anotaciones @Controller y @ResponseBody.
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class MyRestController {
@GetMapping("/hello")
public String sayHello() {
return "Hello, World!";
}
}2.3. @RequestMapping
La anotación @RequestMapping se utiliza para mapear solicitudes web a métodos específicos en un controlador.
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class MyRequestMappingController {
@RequestMapping(value = "/greet", method = RequestMethod.GET)
public String greet() {
return "Greetings!";
}
}2.4. @Autowired
La anotación @Autowired se utiliza para inyectar automáticamente dependencias en los componentes de Spring.
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class MyService {
private final MyRepository myRepository;
@Autowired
public MyService(MyRepository myRepository) {
this.myRepository = myRepository;
}
// Métodos del servicio
}2.5. @Component
La anotación @Component se utiliza para indicar que una clase es un componente de Spring. Las clases anotadas con @Component se detectan automáticamente durante el escaneo de componentes.
import org.springframework.stereotype.Component;
@Component
public class MyComponent {
public void doSomething() {
System.out.println("Doing something...");
}
}2.6. @Service y @Repository
Las anotaciones @Service y @Repository son especializaciones de @Component y se utilizan para indicar que una clase es un servicio o un repositorio, respectivamente.
import org.springframework.stereotype.Service;
import org.springframework.stereotype.Repository;
@Service
public class MyService {
// Lógica del servicio
}
@Repository
public class MyRepository {
// Lógica del repositorio
}
- Ejercicio Práctico
Ejercicio 1: Crear un Controlador REST
- Crea una nueva clase llamada
GreetingController. - Anota la clase con
@RestController. - Define un método
greetque maneje solicitudes GET en la ruta/greety devuelva un mensaje de saludo.
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class GreetingController {
@GetMapping("/greet")
public String greet() {
return "Hello, Spring Boot!";
}
}Ejercicio 2: Inyectar un Componente
- Crea una clase llamada
MessageServiceanotada con@Service. - Define un método
getMessageque devuelva un mensaje. - Crea una clase
MessageControlleranotada con@RestController. - Inyecta
MessageServiceenMessageControllerusando@Autowired. - Define un método
messageenMessageControllerque maneje solicitudes GET en la ruta/messagey devuelva el mensaje delMessageService.
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@Service
public class MessageService {
public String getMessage() {
return "Hello from MessageService!";
}
}
@RestController
public class MessageController {
private final MessageService messageService;
@Autowired
public MessageController(MessageService messageService) {
this.messageService = messageService;
}
@GetMapping("/message")
public String message() {
return messageService.getMessage();
}
}
- Conclusión
En esta sección, hemos explorado algunas de las anotaciones más comunes en Spring Boot y cómo se utilizan para configurar y gestionar los componentes de la aplicación. Las anotaciones permiten una configuración declarativa y facilitan el desarrollo de aplicaciones Spring Boot. En el próximo módulo, profundizaremos en la inyección de dependencias y cómo se puede utilizar para crear aplicaciones más modulares y mantenibles.
Curso de Spring Boot
Módulo 1: Introducción a Spring Boot
- ¿Qué es Spring Boot?
- Configuración de tu Entorno de Desarrollo
- Creando tu Primera Aplicación Spring Boot
- Entendiendo la Estructura del Proyecto Spring Boot
Módulo 2: Conceptos Básicos de Spring Boot
- Anotaciones de Spring Boot
- Inyección de Dependencias en Spring Boot
- Configuración de Spring Boot
- Propiedades de Spring Boot
Módulo 3: Construyendo Servicios Web RESTful
- Introducción a los Servicios Web RESTful
- Creando Controladores REST
- Manejo de Métodos HTTP
- Manejo de Excepciones en REST
Módulo 4: Acceso a Datos con Spring Boot
- Introducción a Spring Data JPA
- Configuración de Fuentes de Datos
- Creación de Entidades JPA
- Uso de Repositorios de Spring Data
- Métodos de Consulta en Spring Data JPA
Módulo 5: Seguridad en Spring Boot
- Introducción a Spring Security
- Configuración de Spring Security
- Autenticación y Autorización de Usuarios
- Implementación de Autenticación JWT
Módulo 6: Pruebas en Spring Boot
- Introducción a las Pruebas
- Pruebas Unitarias con JUnit
- Pruebas de Integración
- Simulación con Mockito
Módulo 7: Funciones Avanzadas de Spring Boot
Módulo 8: Despliegue de Aplicaciones Spring Boot
Módulo 9: Rendimiento y Monitoreo
- Ajuste de Rendimiento
- Monitoreo con Spring Boot Actuator
- Uso de Prometheus y Grafana
- Gestión de Registros y Logs
