Spring od podstaw. Czyli co to w ogóle jest? { weekly#2 }

Jeżeli uczycie się programować w Javie np. na jakimś bootcampie czy kursie online, to w pewnym momencie traficie na temat Springa. Pamiętam, że sam na swoim bootcampie miałem zajęcia ze Springa dopiero po siedmiu miesiącach, praktycznie na sam koniec całego kursu. I uważam, że była to odpowiednia kolejność. Poznawanie Springa, bez praktyczniej znajomości Javy to trochę droga na skróty. Dzisiaj, mimo, że od ukończenia bootcampa minęło 2,5 roku, wciąż poszerzam wiedzę ze Springa. Robię to głównie dlatego, gdyż wiedza ta przydaje się w wielu firmach, choć mnie akurat przez ostatnie lata nie była tak potrzebna. Ale wiadomo, że w IT trzeba się ciągle rozwijać.

Co to jest ten Spring?

Spring to framework, czyli po polsku szkielet, tworzenia oprogramowania w Javie. I tu może pojawić się pytanie – co to jest framework? Znalazłem taką piękną definicję:

Java™ frameworks are bodies of prewritten code used by developers to create apps using the Java programming language.

https://www.redhat.com/en/topics/cloud-native-apps/what-is-a-Java-framework

Możesz sobie zadawać teraz pytanie, czy Spring w takim razie nie jest jaką biblioteką? Otóż to pytanie wcale nie będzie takie bezsensowne, gdyż nawet w popularnym serwisie stackoverflow (polecam używać) pojawiało się w różnych formach. Jedną z podstawowych różnic między biblioteką, a szkieletem oprogramowania jest to, że w biblioteki dostarczają konkretnych funkcji, których możesz użyć. Framework natomiast przejmuje już pewną kontrolę nad aplikacją. I tym właśnie jest Spring.

Dwa kluczowe pojęcia w Springu

Z tej definicji płynnie przejdźmy do dwóch najważniejszych pojęć, które pojawią się pewnie na większości rozmów kwalifikacyjnych, dla ofert z wymaganą znajomością Springa. Odwrócenie sterowania, czyli Inversion of Control (IoC) to właśnie ten element, który wyróżnia frameworki od bibliotek. I tak w Springu implementacją IoC jest wstrzykiwanie zależności, czyli (drugie ważne pojęcie) Dependency Injection. W konterze IoC, czyli springowym ApplicationContext tworzone są obiekty, których zarządzanie nie spoczywa już tylko na programiście (nie musisz deklarować nowych obiektów), ale dzięki odpowiedniej konfiguracji Spring sam wstrzykuje zależności (czyli tworzy obiekty przechowywane w kontekście).

Przykład? Proszę bardzo:

@RestController
class ItemController {

    private final ItemRepository repository;
    private final ItemService service;

    @Autowired
    ItemController(ItemRepository repository, ItemService service) {
        this.repository = repository;
        this.service = service;
    }
...
}

W powyższym przykładzie obiekty repozytorium i serwisu zostaną utworzone przez Springa dzięki zadeklarowaniu odpowiedniego konstruktora oraz podaniu odpowiednich adnotacji (czego w przykładzie już nie widać) dla klas ItemService ItemRepository. Są to odpowiednio adnotacje @Service@Repository, które ostatecznie wskazują Springowi, że obie klasy stanowią @Component. Po uruchomieniu springowej aplikacji obiekty znajdą się one w kontekście (ApplicationContext).

Mam nadzieję, że udało mi się po krótce wyjaśnić czym jest Spring i w ogóle czym są frameworki.

Spring od podstaw. Czyli co to w ogóle jest? { weekly#2 }

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

Przewiń do góry