Wstrzykiwanie zależności (ang. dependency injection) jest konkretnym przypadkiem metodyki wytwarzania oprogramowania Odwrócenie sterowania polega na przekazaniu kontroli nad cyklem życia obiektów kontenerowi.
Czyli że co? A no wyobraź sobie że masz Samochód, i samochód ma w sobie OBIEKT SILNIK, i normalnie samochód żeby działał jest zależny od silnika, zamiast "nadawć inicjalizacje" silnikowi wewnątrz klasy Samochód, odwracasz zależność do tego, żeby obiekt wewnętrzny był inicjalizowany z poziomu ZEWNĘTRZNEGO wstrzyknięcia tzn dostarczasz implementacje, lub obiekt do samochodu z zewnątrz, a nie budujesz samochodu już z zaimplementowanym wewnątrz silnikiem
Jest tak zwane wstrzykiwanie poprzez konstruktor.
public class ItemController {
private ItemService itemService;
@Autowired
public ItemController(ItemService itemService) {
this.itemService = itemService;
}
}
lub inne możliwości przez metode np Mianowicie nie będziemy tworzyć obiektu Weather w każdym oknie, lecz będzie on przekazywany do konstruktora z zewnątrz. Takie przekazywanie zależności z zewnątrz nazywamy wstrzykiwaniem.
public class House {
private Weather weather; // obiekt zalezny od House
public void setWeather(Weather weather) {
this.weahter = weather;
}
}