JavaWeb application

Spring Boot część 3 – Zarządzanie zależnościami

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

Tags:
Show Buttons
Hide Buttons