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
greet
que maneje solicitudes GET en la ruta/greet
y 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
MessageService
anotada con@Service
. - Define un método
getMessage
que devuelva un mensaje. - Crea una clase
MessageController
anotada con@RestController
. - Inyecta
MessageService
enMessageController
usando@Autowired
. - Define un método
message
enMessageController
que maneje solicitudes GET en la ruta/message
y 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