Rozpoczynamy przygodę z nowym cyklem – Fundamenty Spring Framework opartym na podstawie kursu o tym samym tytule. Jest on naturalną, popularną kontynuacją nauki po poznaniu podstaw Javy. W kolejnych artykułach z serii wspomnę o rzeczach, które są niezbędne w codziennej pracy. Czas na nasze pierwsze Hello!
Jak zacząć ze Springiem?
Zaczynamy od odwiedzenia strony https://spring.io/projects.
Jak widzimy jest trochę projektów do wyboru – w porównaniu do czasów wcześniejszych gdy dostępna był jedynie „Framework Spring”.
Z biegiem lat wyciągane z niego były kolejne projekty i zorientowanie się, którymi warto się zainteresować zrobiło się trochę problematyczne.
Na szczęście twórcy szybko zorientował się w problemie i pojawił się Spring Boot.
Spring Boot
Spring Boot powstał i służy tylko w tym celu, by szybko stworzyć aplikację opartą na Spring Framework.
Dzięki niemu można błyskawicznie postawić cały szkielecik Springowy, a wiele konfiguracji robi za nas umożliwiając nam łatwo wejść w ten świat.
Generowanie projektu
Wchodząc na stronkę https://start.spring.io/ możemy sobie nawet wygenerować projekt Spring Boot.
Zbudujmy sobie taki start. Zaznaczam Project – Maven oraz Language Java oraz wersję stabilną Spring Boot, która na tą chwilę to 2.4.5.
Następnie przechodzimy do uzupełniania naszych Metadata. Group wpisuję pl.clockworkjava. Artifact to de facto nazwa projektu czyli wpisuję np. springstart. Description wraz z Package name może zostać domyślne tak jak i Packaging w formie jar. Wybieram wersję aktualną Javy na ten moment.
Po prawej stronie mamy jeszcze możliwość dodania dependencji. Klikamy na magiczny guzik Add dependencies, który pozwala nam na dodanie jednej z wielu zależności (np. baza H2, wsparcie dla MongoDB). Jest tam jeszcze podział na kilka podprojektów np. Spring Web, który zawiera w sobie kilka pomniejszych zależności.
Warto sobie to przejrzeć i chociaż pobieżnie sprawdzić jakie mamy propozycje wsparcia. U samej góry można nawet wyszukiwać konkretnej, która nas interesuje.
My na razie nie potrzebujemy nic poza rdzeniem Springa, więc nie dodaje dependencji.
Explore pokazuje nam podgląd pom.xml, który zostanie nam wygenerowany.Share pozwala podzielić się naszym dziełem, a Generate tworzy nasz pakiecik.
Po ściągnięciu paczki możemy ją wypakować (u mnie 7-Zip) do katalogu springstart i mamy gotowy projekt. Polecam przenieść katalog w miejsce, które przeznaczyliśmy na dysku na naszą pracę z kodem.
Nasz projekt w IDE
Otwieramy IntelliJ (jeśli nie masz to jest do pobrania tutaj). Z powodzeniem może być to wersja Community, bo Spring to nic innego jak projekt w Javie. Oczywiście wersja płatna ma o wiele większe wsparcie dla tego frameworka, jednak dla nas w zupełności wystarczy ta darmowa.
Z menu u góry klikamy nowy projekt, odszukujemy nasz pom.xml i wybieramy Open as new project.
Jeśli jeszcze do tej pory nie miałeś lub miałaś u siebie zainstalowanego Springa, to właśnie w tym momencie Maven go dociąga.
Mamy już gotową klasę spiętą ze Springiem za pomocą adnotacji @SpringBootApplication (która ma w sobie kilka innych adnotacji).
Odpalmy program – Spring startuje.
Odpalenie tego testu sprawdza czy kontekst się ładuje – ładuje się.
Zatem, dzięki Spring Boot, mamy taki szkielet aplikacji już od razu. Nie namęczyliśmy się za bardzo, prawda?
Od wersji Spring Boot zależą wersje kolejnych dodawanych dependencji np. Spring Security. Ich dopasowanie już nas nie interesuje, mamy to także załatwione za nas.
Dorzućmy sobie jeszcze jedną klasę zrobioną już własnoręcznie o nazwie HelloSpring, która będzie implementowała ApplicationRunner. Po zaimplementowaniu tej metody oraz zaznaczeniu wyżej w adnotacji, że to komponent Springowy, nasz kod wygląda w ten sposób:
package clockworkjava.pl.startspring; import org.springframework.boot.ApplicationArguments; import org.springframework.boot.ApplicationRunner; import org.springframework.stereotype.Component; @Component public class HelloSpring implements ApplicationRunner { @Override public void run(ApplicationArguments args) throws Exception { } }
W poprzednim pliku mamy @SpringBootApplication, który zawiera adnotację @EnableAutoConfigurationwięc, co powoduję że Spring automatycznie znajdzie nam wszystkie komponenty, które są na tym samym poziomie co SpringstartApplication i głębiej.
Możemy sobie napisać nasze powitanie „Hello Spring”. Poniższy kod spowoduję wyświetlenie tekstu w konsoli, gdy tylko Spring zakończy inicjalizacje swoich komponentów.
package clockworkjava.pl.startspring; import org.springframework.boot.ApplicationArguments; import org.springframework.boot.ApplicationRunner; import org.springframework.stereotype.Component; @Component public class HelloSpring implements ApplicationRunner { @Override public void run(ApplicationArguments args) throws Exception { System.out.println("Hello Spring!"); } }
Podsumowanie
W kilka minut udało nam się stworzyć szkielet podstawowego programu Springowego, dodać własnego beana i wypisać „Hello Spring” na ekranie konsoli.
Wchodząc na stronkę https://start.spring.io/ możemy sobie wygenerować projekt Spring Boot. Ściągnięta paczka zawiera pierwszą, spiętą ze Springiem klasę i pierwszy test.
Cykl artykułów powstał w oparciu o darmowy kurs Fundamenty Framework Spring dostępny na platformie kursy.clockworkjava.pl.