Volver a la página principal
viernes 29 noviembre 2024
9

¿Qué es la inyección de dependencias en Spring Boot?

La inyección de dependencias en Spring Boot es un concepto clave para simplificar la gestión de objetos y sus dependencias en aplicaciones Java. Spring Boot utiliza el principio de inversión de control (IoC) para gestionar automáticamente la creación, configuración y conexión de objetos dentro del contexto de la aplicación.

¿Cómo funciona la inyección de dependencias en Spring Boot?

Spring Boot utiliza el contenedor de IoC para resolver y gestionar las dependencias entre objetos. Este proceso se basa en anotaciones como @Autowired, @Component, @Service, entre otras, que permiten definir y configurar los beans de manera declarativa.

Tipos de inyección de dependencias

Spring Boot ofrece varias formas de realizar la inyección de dependencias:

1. Por constructor: Recomendado por ser más adecuado para pruebas y promover la inmutabilidad.

2. Por método setter: Útil para dependencias opcionales o configurables.

3. Por campo (campo inyectado): Aunque común, no es la mejor práctica por dificultades con pruebas unitarias.

Ejemplo básico de inyección de dependencias

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

@Component
public class Motor {
    public void arrancar() {
        System.out.println("Motor arrancado");
    }
}

@Component
public class Vehiculo {
    private final Motor motor;

    @Autowired
    public Vehiculo(Motor motor) {
        this.motor = motor;
    }

    public void encender() {
        motor.arrancar();
        System.out.println("Vehículo en marcha");
    }
}

En este ejemplo, la clase Vehiculo depende de la clase Motor. La dependencia se inyecta mediante el constructor y gestionada automáticamente por el contenedor de Spring.

Tabla de anotaciones comunes

Anotación Descripción
@Component Marca una clase como un bean administrado por Spring.
@Service Especialización de @Component para la capa de servicios.
@Repository Especialización de @Component para la capa de acceso a datos.
@Controller Especialización de @Component para la capa de controladores.
@Autowired Inyecta automáticamente una dependencia gestionada por el contenedor IoC.
@Bean Define un bean manualmente en una clase de configuración.

Beneficios de la inyección de dependencias

  • Reducción del acoplamiento: Los objetos no necesitan crear ni gestionar sus propias dependencias.
  • Facilidad para pruebas: Simplifica el uso de mocks y pruebas unitarias.
  • Mantenimiento: Promueve un diseño modular y limpio.

Referencias

Para más detalles, visita la documentación oficial de Spring.

Compartir:
Creado por:
Author photo

Jorge García

Fullstack developer