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.

  1. ¿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.

  1. 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
}

  1. Ejercicio Práctico

Ejercicio 1: Crear un Controlador REST

  1. Crea una nueva clase llamada GreetingController.
  2. Anota la clase con @RestController.
  3. 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

  1. Crea una clase llamada MessageService anotada con @Service.
  2. Define un método getMessage que devuelva un mensaje.
  3. Crea una clase MessageController anotada con @RestController.
  4. Inyecta MessageService en MessageController usando @Autowired.
  5. Define un método message en MessageController que maneje solicitudes GET en la ruta /message y devuelva el mensaje del MessageService.
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();
    }
}

  1. 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

Módulo 2: Conceptos Básicos de Spring Boot

Módulo 3: Construyendo Servicios Web RESTful

Módulo 4: Acceso a Datos con Spring Boot

Módulo 5: Seguridad en Spring Boot

Módulo 6: Pruebas en Spring Boot

Módulo 7: Funciones Avanzadas de Spring Boot

Módulo 8: Despliegue de Aplicaciones Spring Boot

Módulo 9: Rendimiento y Monitoreo

Módulo 10: Mejores Prácticas y Consejos

© Copyright 2024. Todos los derechos reservados