Kiedy po raz pierwszy zobaczyłem Spring Boot w akcji od razu się nim zachwyciłem. Kiedy Josh Long (jeden z developerów Springa), podczas swojej prelekcji, demonstrował jak łatwo i szybko zestawimy aplikację opartą o Spring Framework z użyciem Spring Boot, siedziałem jak wryty. Mimo, że akurat na tę prezentację trafiłem trochę dziełem przypadku, to od razu wiedziałem, że jestem we właściwym miejscu o właściwym czasie. Nie mogłem się doczekać, kiedy będę mógł użyć tego dobrodziejstwa od Springa. Teraz używam często i dalej nie zmieniłem swojego zdania.
Jeśli miałbym w paru słowach opisać czym jest Spring Boot, to powiedział bym tak: Jest to nakładka na Spring Framework, pozwalająca zaoszczedzić 90% czasu, który musiałbyś spędzić na konfiguracji szkieletu Twojej aplikacji spring’owej.
Tak samo, jak dobrze pamiętam, jaki poziom ekscytacji wzbudziło we mnie to narzędzie, tak samo dobrze pamiętam negatywne komentarze moich kolegów, którym o nim opowiadałem. Ale nie o tym teraz, o tym w niedalekiej przyszłości.
Post miał być o szkielecie pod moją konkursową apkę. Tak więc zaczynamy. Normalnie nazwali byśmy to „Live coding”, ale w tym przypadku będzie to bardziej „Blog post coding” 🙂
Czas start.
Trzy razy wykonujemy:
mvn archetype:generate
aby utworzyć moduł parent oraz podmoduły core i web.
web – będzie zawierał UI
core – tutaj przewiduję logikę odpowiedzialną za komunikację z modułem Maestro
mvn clean package
kompilacja przechodzi bez problemu.
Otwieramy mój ulubiony IDE od JetBrains tj. IntelliJ IDEA i importujemy projekt.
Wypadałoby dodać parę wpisów do .gitignore, aby zapobiec dodawania do repozytorium plików generowanych przez IDE.
Do poma głównego dodajemy:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.3.3.RELEASE</version>
</parent>
aby aplikacja otrzymała wszystkie zależności niezbędne, aby stać się aplikacją opartą o Spring Boot.
W pom.xml weba dodajemy spring-boot-starter-thymeleaf oraz spring-boot-starter-web, co sprawi, ze będziemy mieli wsparcie wzorca MVC wraz z Thymeleaf jako szablonem widoków.
Pozostaje utworzyć klasę:
@SpringBootApplication
public class Application {
public static void main(String[] args) throws Exception {
SpringApplication.run(Application.class, args);
}
}
oraz kontroler obsługujący żądania HTTP strony głównej:
@Controller
public class MainController {
@RequestMapping(value = "/", method = RequestMethod.GET)
public String main(){
return "main";
}
}
Do pełni szczęścia brakuje jeszcze widoku, więc tworzymy main.html w resources/templates.
mvn clean package
na głównym pom.xml.
WOW skompilowało się.
Wchodzimy do modułu web i uruchamiamy aplikację:
mvn spring-boot:run
Hurra. Działa. Aplikacja startuje na porcie 8080.
Tym oto sposobem mamy szkielet aplikacji.
Czas stop. W mniej więcej 10 minut udało się zestawić działającą aplikację webowa z wstępnym podziałem na moduły odpowiedzialne za interfejs użytkownika oraz logikę aplikacji.
maven? maven jest passe! 😉
Faktycznie maven to teraz ju? old school ale ca?y czas jest powszechnie u?ywany. Pewnie wola?by? zobaczy? tu gradle. Niestety jeszcze nie mia?em okazji pracowa? na gradle ale jestem pewien, ?e nied?ugo wezm? to na warsztat.
Polecam gradle..zdecydowanie 😉 maven wysiada
Tak te? s?ysza?em :). Jak wystarczy mi czasu to szkielet dostosuj? te? do gradle. W ko?cu trzeba si? z tym zapozna?.