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.
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.
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.
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.
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. |
Para más detalles, visita la documentación oficial de Spring.
Jorge García
Fullstack developer