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

¿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