13.08.2018
Autorzy:

Spring Boot – projekt ułatwiający tworzenie aplikacji w Javie

Spring Framework to główna platforma programistyczna, która sprawia, że tworzenie środowiska Java jest łatwiejsze i bardziej wydajne. Sam Spring jest również określany jako typ „lekkiej infrastruktury”, ponieważ występuje bardzo mały stopień zależności od API.

Z poniższego artykułu dowiesz się:

  • czym jest projekt Spring Boot?
  • w jaki sposób tworzy się aplikacje w Spring Boot?
  • jakie są zalety korzystania z owego rozwiązania?

Jak powstał Spring Boot? 

Zanim powstał projekt Spring Boot, programiści używając frameworka Spring musieli sami dbać o zachowanie prawidłowych zależności pomiędzy dodawanymi bibliotekami. Częstym problemem podczas konfiguracji API była niekompatybilność dołączanych bibliotek. Dodatkowym wyzwaniem była konieczność posiadania zewnętrznego serwera (np.: „Tomcat”), który pozwalał na wgranie aplikacji i weryfikację poprawności jej działania. Konfiguracja, wgrywanie, uruchamianie oraz testowanie aplikacji było bardzo pracochłonne. Dlatego grupa developerów wspierających rozwój Spring Framework postanowiła skrócić tworzenie nowej aplikacji.  

Budowanie aplikacji za pomocą Spring Boot 

W celu rozwiązania wcześniej zdefiniowanych problemów, programiści stworzyli tzw. „startery”. W uproszczeniu – startery to zbiór wszystkich wymaganych bibliotek oraz konfiguracji. Posiada również wbudowany serwer aplikacyjny Tomcat. Aby zacząć używać Spring Boot wystarczy: 

  • dodać odpowiednie zależności do pliku konfiguracyjnego pom.xml (w przypadku używania Maven)
  • dodać „rodzica”, po którym aplikacja będzie dziedziczyć zależności

Poniżej przykład pokazujący, jak niewiele pracy trzeba wykonać, aby czerpać zyski ze wszystkich korzyści Spring Boot:

&lt;parent&gt;<span data-ccp-props="{}"> </span>
             &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;
             &lt;artifactId&gt;spring-boot-starter-parent&lt;/artifactId&gt;<span data-ccp-props="{}"> </span>
             &lt;version&gt;1.5.9.RELEASE&lt;/version&gt;<span data-ccp-props="{}"> </span>
&lt;/parent&gt;

Jak widać, Spring Boot pozwala uniknąć poświęcenia wielu godzin przy tworzeniu podstawowej konfiguracji.

Następną czynnością jaką trzeba wykonać, jest dodanie starterów do swoich zależności. Taką biblioteką jest m.in. starter o nazwie „spring-boot-starter-web”, który dostarcza biblioteki związane z obsługą mechanizmów webowych. Poniżej przykład dodanej zależności. 

&lt;dependencies&gt;<span data-ccp-props="{}"> 
</span>              (...)<span data-ccp-props="{}"> 
</span>              &lt;dependency&gt;<span data-ccp-props="{}"> 
</span>                            &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;<span data-ccp-props="{}"> 
</span>                            &lt;artifactId&gt;spring-boot-starter-web&lt;/artifactId&gt;<span data-ccp-props="{}"> 
</span>              &lt;/dependency&gt;<span data-ccp-props="{}"> 
</span>              (...)<span data-ccp-props="{}"> 
</span>&lt;/dependencies&gt;<span data-ccp-props="{}"> 
 
</span>

Ostatnim elementem procesu jest utworzenie klasy, będzie ona odpowiedzialna za uruchamianie aplikacji. 

@SpringBootApplication<span data-ccp-props="{}"> </span>
<b>public</b> <b>class</b> ExampleApplication {<span data-ccp-props="{}"> </span>
<b>              public</b> <b>static</b> <b>void</b> main(String[] args) {<span data-ccp-props="{}"> </span>
                          SpringApplication.<i>run</i>(ExampleApplication.<b>class</b>, args);<span data-ccp-props="{}"> </span>
              }<span data-ccp-props="{}"> </span>
}<span data-ccp-props="{}"> </span><span data-ccp-props="{}"> 
 
</span>

Mając tak przygotowaną aplikację, można ją uruchomić na dwa sposoby: 

  • przez środowisko developerskie jako „Java application” 
  • z linii komend (java-jar…) 

Jeżeli jesteś ciekaw szczegółów, to zajrzyj na oficjalną stronę projektu Spring

Adaptacja Spring Boot w mikroserwisach

Twórcy Spring Framework dostrzegając ogromny potencjał swojego projektu, zaczęli go bardzo szybko rozwijać. Ten proces zapoczątkował powstawanie coraz większej ilości Spring Boot starterów. Dlaczego aplikacje oparte na Spring Boot sprzyjają rozwojowi systemów IT, opartych na architekturze mikroserwisów? Zanim odpowiemy na to pytanie, doprecyzujmy czym są same mikroserwisy. 

Mikroserwisy, jak nazwa wskazuje, to bardzo małe aplikacje, które realizują niewielki wycinek zdań w stosunku do całego systemu IT. Tworzone są w takim sposób, aby były jak najbardziej autonomiczne i luźno powiązane z innymi serwisami. W tym celu powinno się je uruchamiać na osobnych hostach – zapewnia to większą niezależność i pomoże uniknąć przeładowania serwera oraz jego ewentualnych awarii.

Można wyróżnić wiele zalet mikroserwisów, między innymi:

  • korzystanie z technologii, która dokładnie odzwierciedla potrzeby biznesowe, np. można zastosować inny język programowania, relacyjną lub nierelacyjną bazę danych NoSQL itp.
  • serwisy, które będą tylko czasowo mocno obciążone (np. serwis z raportami), można zreplikować i dzięki narzędziom Load Balancing, równomiernie rozkładać ruch na poszczególne node, przyspieszając fragment systemu
  • podczas wdrażania nowych funkcjonalności do systemu, nie ma potrzeby wyłączania go całego i ponownego uruchamiania, oczekując z nadzieją, że nie pojawią się błędy. Nowy serwis można wdrożyć bez dodatkowych komplikacji

Wracając do pytania: Dlaczego Spring Boot sprzyja rozwojowi systemów IT, opartych na architekturze mikroserwisów? Spring Boot, dzięki prostocie konfiguracji oraz szybkiemu uruchamianiu, bez zbędnych zewnętrznych serwerów aplikacyjnych, może nieustająco dostarczać klientom coraz nowsze funkcjonalności. Nie jesteśmy uwiązani tylko jedną technologią. Nie zatrzymujemy całego systemu, przez co jego współczynnik SLA jest bliski 100%.

Pierwszy projekt w Spring Boot

Czas sprawdzić wiedzę w praktyce. Poniżej znajduje się zarys opracowania nowego projektu – warto zajrzeć do tutoriala przygotowanego przez Spring , w którym krok po kroku omówione zostało tworzenie i uruchamianie aplikacji. Można tam przeczytać o trzech możliwych metodach utworzenia aplikacji opartej na Spring Boot: 

  1. Poprzez stronę udostępnioną przez Spring, na której można skonfigurować projekt. Wystarczy uzupełnić wymagane pola, zaznaczyć z czego będziemy korzystać i kliknąć „Generate Project”. Gotowe! 
  2. Doinstalowanie wtyczki do IDE i opracowanie tamże projektu przy użyciu narzędzia Spring Tool Suite
  3. Wygenerowanie projektu przy pomocy odpowiedniego narzędzia, np. Maven. 

Poniżej został przedstawiony przykład utworzonej aplikacji Spring Boot, z użyciem drugiej metody: 

Rys. 1. Plik pom.xml po wygenerowaniu aplikacji 

Następnie przechodzimy do klasy, która jest odpowiedzialna za uruchomienie naszej aplikacji. 

Rys. 2. Prezentacja klasy DemoApplication 

Na rysunku 2 widać już utworzoną klasę DemoApplication, która posiada adnotacje @SpringBootApplication oraz @RestController. Pierwsza adnotacja zastępuje inne adnotacje, które mają za zadanie uruchomienie automatycznego konfigurowania, skanowania komponentów i dodania dodatkowych klas konfiguracyjnych przy użyciu tylko jednej adnotacji. Dla ułatwienia działań dodano w tej klasie drugą adnotację. Informuje ona o tym, że klasa będzie również kontrolerem. W klasie DemoApplication mamy metodę main, dzięki której możemy uruchomić aplikację. W linijkach 15-18 znajduje się przykład implementacji usługi REST, która zwraca obiekt Message w domyślnym formacie JSON.

Rys. 3 Odpowiedź z usługi

Na rysunku 3 widać wynik z usługi, która dokładnie odwzorowuje przygotowany obiekt. 

Podsumowanie 

Przedstawione powyżej możliwości aplikacji opartej na Spring Boot to niewielki zakres ułatwień dla developerów. Poprawna konfiguracja aplikacji i jej środowiska zostały maksymalnie uproszczone, dzięki czemu nie są potrzebne żadne dodatkowe narzędzia do jej uruchomienia. Jeżeli natomiast pojawia się konieczność dodania kolejnych funkcjonalności, z pomocą przychodzą startery – wystarczy dołączyć odpowiednią bibliotekę od zależności i dopisać adnotację. Gdyby nie powstał projekt Spring Boot, z pewnością ten styl architektury mikroserwisów, nie zostałaby tak szybko doceniony przez środowisko IT z całego świata. 

Jeśli chciałbyś rozwijać się w obszarze Javy lub integracji systemów IT, dołącz do nas!

Nasi eksperci
/ Dzielą się wiedzą

Ilustracja przedstawiająca robota reprezentującego sztuczną inteligencję, otoczonego symbolami wyzwań i błędów w sztucznej inteligencji. Obraz zawiera pomarańczowy mózg, zepsutą żarówkę i cyfrowe piksele, symbolizujące dane i zagrożenia etyczne związane z awariami sztucznej inteligencji
30.10.2024

Wpadki AI / Gdy sztuczna inteligencja wymyka się spod kontroli

AI

Sztuczna inteligencja rewolucjonizuje wszystkie branże, oferując naprawdę imponujące możliwości w zakresie wydajności, szybkości i innowacyjności. Jednak w miarę jak systemy AI stają się coraz bardziej zintegrowane z procesami biznesowymi, staje się oczywiste, że narzędzia te nie są również pozbawione wad. Od małych błędów po poważne...

AI w optymalizacji łańcucha dostaw materiałów budowlanych
28.10.2024

Zastosowanie sztucznej inteligencji w optymalizacji łańcucha dostaw materiałów budowlanych 

E-Commerce

Czy sztuczna inteligencja może zrewolucjonizować zarządzanie łańcuchami dostaw materiałów budowlanych? Dowiedz się, jak AI może pomóc w optymalizacji prognozowania zapotrzebowania, zarządzaniu zamówieniami i stanami magazynowymi, a także zminimalizować ryzyko i spersonalizować ofertę dla klientów. Odkryj przyszłość AI w branży...

08.10.2024

Magento Open Source vs Adobe Commerce / Który system e-commerce wybrać?

E-Commerce

Wybór odpowiedniej platformy e-commerce to kluczowa decyzja, która może zaważyć na sukcesie Twojego biznesu w handlu online. Magento Open Source oraz Adobe Commerce to dwa popularne rozwiązania, oferujące różne możliwości dostosowane do potrzeb przedsiębiorstw. Podczas gdy Magento Open Source to elastyczna platforma z otwartym kodem...

Ekspercka wiedza
dla Twojego biznesu

Jak widać, przez lata zdobyliśmy ogromną wiedzę - i uwielbiamy się nią dzielić! Porozmawiajmy o tym, jak możemy Ci pomóc.

Napisz do nas

<dialogue.opened>