Spring daje możliwość automatycznego zarządzania instancjami klas. Zwalnia to programistę z ręcznego tworzenia instancji klas.
Które klasy powinny być zarządzane przez kontekst Spring?
Zależy od przypadku, ale zasadniczo są to klasy, które w ciągu życia aplikacji mają tylko jedną instancję.
Może być to klasa, której instancja w cyklu życia aplikacji jest tworzona tylko raz. Stanowi ona dobrą kandydaturę, aby oznaczyć ją adnotacją służącą do automatycznego zarządzania instancją.
Przykład
Rozpatrzmy wybrany przypadek sklepu internetowego. Mamy w nim koszyk i listę produktów. Ponieważ koszyk w całej aplikacji jest tylko jeden, to dobrze on nadaje się do oznaczenia go jako klasa zarządzana przez kontekst Spring.
Osobną kwestią będzie lista produktów. Ponieważ ich w koszyku może być wiele – co też za tym idzie możemy tworzyć je dynamicznie, toteż klasę Product można pozostawić niezarządzaną.
Implementacja
@Component
public class ShoppingCard {
private List<product> productList;
public ShoppingCard() {
this.productList = new ArrayList<>();
}
public void addProductToShoppingCard(Product product)
{
productList.add(product);
}
}
public class Product {
private long id;
private String name;
public Product(long id, String name) {
this.id = id;
this.name = name;
}
}
public class Shop {
@Autowired
private ShoppingCard shoppingCard;
public void purchase() {
shoppingCard.addProductToShoppingCard(new Product(1, "Milk"));
shoppingCard.addProductToShoppingCard(new Product(2, "Tea"));
shoppingCard.addProductToShoppingCard(new Product(3, "Bread"));
}
}Aby w kodzie programu skorzystać z klasy która jest zarządzania przez Spring należy pole w klasie oznaczyć adnotacją (co jest widoczne w klasie Shop):
- @Autowired – pozwala ona na wstrzyknięcie instancji klasy w oznaczone pole.
Tak oznakowane pole można już w pełni wykorzystywać – jest ona automatycznie inicjalizowana przez Spring. Spring poszukuje wszystkie klasy, które zostały opatrzone jedną z adnotacji:
- @Component
- @Controller
- @RestController
- @Repository
- @Service
A następnie w przypadku odnalezienia, wykrzykuje jej instancje do pola oznaczonego adnotacją @Autowired. Ten rodzaj wstrzykiwania nazywa się wstrzykiwaniem do pól.
W kolejnej części kursu zostanie przedstawione inne sposoby wstrzykiwania zależności.
Cały kurs opisujący mechanikę i działanie Spring Boot od podstaw znajdziesz tutaj: Kurs Spring Boot
Szkolenia live dla developerów • praktyczna wiedza, realne case’y, zero lania wody 
