3.. 2.. 1.. Witaj, Spring Boot!

Dopiero teraz, przy piątym wpisie w ramach konkursu Daj się poznać, osiągnęłam etap aplikacji „Witaj Świecie”. No cóż. W tym artykule opowiem krótko co przy tej okazji zrobiłam i co mnie zaskoczyło. Kod jest, oczywiście, dostępny w GitHubie.

Szkielet aplikacji

Za radą Java Magazine, szkielet aplikacji wygenerowałam przy użyciu serwisu Spring Initializr.

Struktura projektu Spring Boot
Struktura projektu Spring Boot

Najważniejsze elementy w strukturze aplikacji to (tradycyjnie zresztą):

  • katalog src/main/java z kodem w języku Java (domyślnie wypełniany przez Spring Initializr jedną klasą o nazwie Application),
  • katalog src/test/java z testami jednostkowymi,
  • src/main/resources to miejsce na zasoby; podkatalog static ma zawierać pliki przetwarzane po stronie klienta (obrazki, javascript), a podkatalog templates szablony przetwarzane po stronie serwera,
  • plik pom.xml to informacje dla Mavena, którego wybrałam jako narzędzie do budowania mojego projektu; zawiera przede wszystkim listę potrzebnych mi bibliotek.
Hello World!

Aplikacja kompilowała się już w poprzedniej odsłonie, ale teraz zależało mi na jej uruchomieniu i wyświetleniu czegoś w przeglądarce. W oparciu o tutorial na stronie Springa powstał ten oto skomplikowany kontroler:

  • @RestController to adnotacja, która sprawi, że klasa będzie mogła obsługiwać żądania REST. Jej użycie jest równoważne zastosowaniu dwóch innych adnotacji: @Controller and @ResponseBody. W ten sposób tworzę kontroler, który zwraca dane tekstowe (a nie kod HTML).
  • @RequestMapping pozwala określić adres, pod jakim ma być dostępny kontroler. W naszym wypadku będzie to adres najwyższego rzędu.

Klasa uruchamiająca aplikację wygląda w najprostszej wersji tak:

  • Adnotacja @SpringBootApplication również grupuje kilka innych adnotacji. Być może najistotniejsza z nich to @ComponentScan. Dzięki niej pakiet, w którym umieściłam kod zostanie przeszukany pod kątem usług sieciowych – w ten sposób znaleziony zostanie HelloController.

Za radą tutoriala urozmaiciłam sobie efekt w konsoli dodając kod przeglądający ziarna (beans) dostępne w tzw. kontekście aplikacji.

Jak to wygląda w przeglądarce? Zerknij na nagłówek tego wpisu.

Poniżej przedstawiam dane wypisane w konsoli. Zwróć uwagę, że aplikacja webowa jest uruchamiania w wierszu poleceń z pliku JAR, a nie z pliku WAR wgranego na serwer. Jak to możliwe? Otóż przy aktualnej konfiguracji, wynikowy plik JAR zawiera wbudowaną wersję serwera Tomcat. Wielkość szafbook-0.0.1-SNAPSHOT.jar to 33 MB…

Głupie wtopy: co zrobiłam nie tak przy pierwszym podejściu

Problem 1: Aplikacja buduje się (przy użyciu Mavena) w Eclipse i nie buduje się na zewnątrz. Rozwiązanie: Instalacja w systemie Mavena 3 i przestawienie Eclipse na tę samą instalację (wcześniej Eclipse korzystał z instalacji wbudowanej, a w systemie miałam Mavena 2).

Problem 2: java.lang.UnsupportedClassVersionError Rozwiązanie: Zmiana wartości zmiennej  JAVA_HOME  w systemie na wersję Javy używaną przez projekt w Eclipse.

Problem 3: Aplikacja działa w przeglądarce, ale w konsoli mam „java.lang.IllegalStateException: Tomcat connector in failed state„. Rozwiązanie: Usunąć zduplikowane wywołanie SpringApplication.run 🙂 Sukcesem może zakończyć się tylko jedno z nich, potem port będzie już zajęty.

Co dalej?

Jeśli chodzi o rozwijanie projektu, to najbliższe prace poświęcone będą:

  1. Ciągłej Integracji,
  2. „M” w MVC, czyli modelowi danych.

Jeśli chodzi o blogowanie, to planuję wpisy bezpośrednio związane z rozwojem kodu, a dodatkowo:

  1. git rebase, którego znaczenie wreszcie zrozumiałam,
  2. Maven.
PS. Java Beans – ciekawostka lingwistyczna

W języku programowania Java istotną rolę pełnią tzw. „ziarenka”: JavaBeans oraz Enterprise JavaBeans. Dlaczego ziarenka? Otóż „Java” to w Stanach synonim słowa „kawa” (bardzo dużo kawy uprawiano na wyspie Jawie). Stąd pomysł, żeby najmniejsze samodzielne składowe aplikacji określić mianem „ziaren kawy”.

Oficjalne logo języka Java - parujący kubek z kawą
Oficjalne logo języka Java – parujący kubek z kawą

 

 

Komentarze

2 myśli nt. „3.. 2.. 1.. Witaj, Spring Boot!”

  1. Oczywiście bardzo ciekawy wpis ale mam pytanie troszkę o coś innego. Jak zobaczyć archiwalne numery Java Magazine ?

Dodaj komentarz

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