Cześć,
w tym i w kilku kolejnych postach chciałbym przybliżyć Wam kilka rzeczy związanych z tworzeniem aplikacji we frameworku Spring Boot. Dzisiaj zbudujemy prostą aplikację opartą na Spring Boot. Ale najpierw...
A co to ten Spring Boot?
Spring był i jest bardzo często wykorzystywanym frameworkiem do tworzenia aplikacji webowych. Aplikacje webowe mają to do siebie, że muszą działać w środowisku jakiegoś serwera (kontenera) - a więc chociażby takiego tomcata. Dlatego, jeśli stworzymy aplikację w Springu, aby ją uruchomić, musimy wdrożyć ją na takowy serwer. Konieczność uzależniania się od dodatkowej aplikacji może niektórym się nie spodobać. Powstała więc alternatywa: Spring Boot. Co to robi? Pozwala stworzyć aplikację springową, która zachowuje się jak samodzielna (standalone) aplikacja - można spakować ją do pliku .jar i uruchomić na dowolnym komputerze z JRE (Java Runtime Environment). Uruchomienie naszej aplikacji jest więc tak proste:
java -jar mojaAplikacja.jar
Po uruchomieniu jara nasza po chwili będziemy mogli odwiedzić jej stronę główną wpisując w przeglądarce adres, który w domyślnej konfiguracji będzie taki:
http://localhost:8080/
No dobrze - pisałem, że aplikacje springowe wymagają serwera. Gdzie jest więc serwer? To proste - taka aplikacja korzysta z serwera (kontenera) wbudowanego (embedded container). Przy generacji pliku .jar dodane zostają biblioteki serwera, który jest natomiast startowany w wyniku wywołania odpowiedniej metody. Całkiem fajne, nie?
Spring Boot daje jeszcze trochę innych przydatnych funkcjonalności upraszczających życie. Generalnie jego ideą jest maksymalne uproszczenie konfiguracji (która przy Springu potrafi dać w kość), tak, aby dało się bez bólu i trudu zrobić aplikację, która działa.
Jak zacząć?
Dobrze, koniec gadania. Czas zająć się rzeczami praktycznymi. Do budowania aplikacji użyjemy Mavena - zajmie się on za nas pobraniem zależności, kompilacją oraz generacją prawidłowego jara.
Utwórzmy sobie gdzieś następującą strukturę katalogów/plików (zgodnie z konwencją Mavena):
-MyFirstSpringBootApp
--src
---main
----java
-----com
------example
-------MainClass.java
--pom.xml
MainClass.java będzie naszą główną klasą, a pom.xml będzie zawierał informacje dla Mavena.
pom.xml
Otwórzmy teraz plik pom.xml. Jego zawartość niech będzie następująca (za chwilę postaram się wyjaśnić o co chodzi):
4.0.0 com.example SpringBootFirstApp 0.0.1-SNAPSHOT org.springframework.boot spring-boot-starter-parent 1.2.3.RELEASE org.springframework.boot spring-boot-maven-plugin org.springframework.boot spring-boot-starter-web
W środku tagu <parent> definiujemy odwołanie do mavenowego projektu rodzica. Dzięki temu nie musimy specyfikować ogromnej ilości zależności, pluginów itd., ponieważ to wszystko dziedziczymy od naszego rodzica, czyli spring-boot-starter-parent.
Dalej włączamy plugin do budowania aplikacji używającej Spring Boot - dzięki niemu maven będzie generował nam właściwe, wykonywalne jary.
Niżej mamy zdefiniowaną tylko jedną zależność - dla aplikacji webowych będzie zawsze tutaj występować.
Przyznacie, że nieskomplikowane? To też jest siła Spring Boota.
Co dalej? Teraz możemy już napisać naszą klasę główną.
MainClass.java
Otwórzmy naszą klasę główną i umieśćmy tam następujący kod. Jest to absolutne minimum, aby wystartować wbudowany serwer i uchronić aplikację przed natychmiastową awarią:
package com.example; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class MainClass { public static void main(String[] args) { SpringApplication.run(MainClass.class, args); } }
Adnotacja @SpringBootApplication jest niezbędna - jak czytamy w dokumentacji, równoważna jest ona trzem adnotacjom @Configuration, @EnableAutoConfiguration oraz @ComponentScan z domyślnymi parametrami
Funkcja main() zaś inicjuje całą maszynerię przez wywołanie funkcji run() klasy SpringApplication.
Pierwsze uruchomienie
Tak! Mamy wystarczająco kodu, aby naszą aplikację zbudować i uruchomić. Aby dokonać tego pierwszego, wchodzimy przez terminal do folderu MyFirstSpringBootApp i wpisujemy:
mvn install
Jeśli wszystko pójdzie zgodnie z planem, otrzymujemy pod koniec komunikat:
[INFO] BUILD SUCCESS
Teraz jesteśmy gotowi do uruchomienia aplikacji. Wpisujemy:
java -jar target/SpringBootFirstApp-0.0.1-SNAPSHOT.jar
Aplikacja uruchomi się, o czym świadczą m.in. te komunikaty:
2015-05-17 18:06:13.280 INFO 10832 --- [ main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 8080 (http)
2015-05-17 18:06:13.282 INFO 10832 --- [ main] MainClass : Started MainClass in 3.313 seconds (JVM running for 3.722)
Tak więc, uruchomiony został tomcat, który domyślnie pełni rolę serwera wbudowanego - domyślnie na porcie 8080. Wpisując w przeglądarce adres:
http://localhost:8080/
zobaczymy stronę Whitelabel Error Page - nie ma się co dziwić - nasza aplikacja póki co nie została skonfigurowana do obsługi jakichkolwiek żądań. Czas to naprawić!
Klasa kontrolera
Napiszmy więc na szybko klasę, która posłuży jako banalny kontroler - dzięki temu nasza aplikacja da jakiś znak życia. Utwórzmy w katalogu MyFirstSpringBootApp/src/java/main/com/example plik HelloController.java i wprowadźmy następujący kod:
package com.example; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RequestMapping; @RestController public class HelloController { @RequestMapping(value = "/") public String helloWorld() { return "Hello World
" + "Moja pierwsza aplikacja w Spring Boot"; } }
W klasie tej mapujemy wszelkie żądania do korzenia naszej strony do metody helloWorld(), która zwraca to, co widać. Dzięki adnotacji @RestController serwer zwraca do użytkownika w odpowiedzi dokładnie to, co zwraca nasza metoda.
Ponownie budujemy aplikację (mvn clean install) i uruchamiamy utworzonego jara.
Jeśli teraz w przeglądarce ponownie wpiszemy adres:
http://localhost:8080/
Zobaczymy coś takiego:
Hello World
Moja pierwsza aplikacja w Spring Boot
Dokładnie o to nam chodziło!
Podsumowanie
To by było na tyle - udało nam się zrobić prostą aplikację używając Spring Boot. Gratulacje :) .
Brak komentarzy:
Prześlij komentarz