Volver a la página principal
martes 1 octubre 2024
15

Cómo inyectar dependencias con @Autowired en Spring Boot

¿Qué es @Autowired en Spring Boot?

@Autowired es una anotación de Spring Framework que se utiliza para la inyección automática de dependencias. Permite que Spring resuelva e inyecte automáticamente las instancias de los beans (objetos gestionados por el contenedor de Spring) en los componentes donde se necesitan. La anotación se puede usar en campos, constructores y métodos, y Spring se encarga de buscar el bean correspondiente en el contenedor para asignarlo a la dependencia requerida.

Esta inyección de dependencias simplifica la gestión de las instancias y promueve el principio de inversión de control (IoC), lo que permite desacoplar las dependencias y facilita las pruebas y el mantenimiento del código.

Formas de uso de @Autowired

  • En campos: Inyecta el bean directamente en un campo de la clase.
  • En constructores: Inyecta dependencias a través del constructor de la clase.
  • En métodos: Inyecta dependencias usando un método setter.

Ejemplos de uso de @Autowired en Spring Boot

1. Inyección de dependencias en un campo

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class MiServicio {
    
    @Autowired
    private MiRepositorio miRepositorio;

    public String obtenerDato() {
        return miRepositorio.encontrarDato();
    }
}

En este ejemplo, @Autowired se utiliza para inyectar una instancia de MiRepositorio en el campo miRepositorio de la clase MiServicio.

2. Inyección de dependencias en un constructor

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;

@Controller
public class MiControlador {

    private final MiServicio miServicio;

    @Autowired
    public MiControlador(MiServicio miServicio) {
        this.miServicio = miServicio;
    }

    public String mostrarSaludo() {
        return miServicio.obtenerDato();
    }
}

Aquí, @Autowired se usa en el constructor de MiControlador, indicando a Spring que debe inyectar MiServicio al crear la instancia del controlador.

3. Inyección de dependencias en un método setter

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

@Component
public class OtroComponente {

    private MiServicio miServicio;

    @Autowired
    public void setMiServicio(MiServicio miServicio) {
        this.miServicio = miServicio;
    }
}

En este caso, @Autowired se utiliza para inyectar MiServicio mediante el método setMiServicio.

Referencia oficial

Puedes obtener más información sobre @Autowired en la documentación oficial de Spring.

Compartir:
Creado por:
Author photo

Jorge García

Fullstack developer