@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.
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
.
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.
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
.
Puedes obtener más información sobre @Autowired
en la documentación oficial de Spring.
Jorge García
Fullstack developer