Spring i IntelliJ IDEA

IntelliJ IDEA jest bez wątpienia najpopularniejszym środowiskiem programistycznym wykorzystywanym do tworzenia aplikacji w Javie. W tej lekcji zobaczysz jak ułatwia ono tworzenie aplikacji z wykorzystaniem Springa.

IntelliJ IDEA Community vs Ultimate

IntelliJ IDEA występuje w dwóch wersjach:

  • Community, która jest bezpłatna,
  • Ultimate, która jest płatna.

Różnice wynikają przede wszystkim z tego, że wersja Ultimate oferuje wsparcie dla dużo większej liczby technologii, takich jak HTML, CSS, JavaScript, ale także różne frameworki takie jak Java EE / Jakarta EE, Spring, Micronaut, czy Quarkus.

Tworzenie aplikacji w Springu z wykorzystaniem wersji Community uważam niestety za niekomfortowe, ze względu na brak kreatora projektu i brak wsparcia dla technologii webowych. Dużo lepszą alternatywą jest wykorzystanie Visual Studio Code z pluginem Spring Tool Suite.

Licencja IntelliJ IDEA Ultimate

W celu używania IntelliJ IDEA Ultimate należy mieć aktywną subskrypcję, której cena różni się w zależności od tego, czy kupujemy licencję indywidualną, czy firmową (czyli taką, którą można przekazać innemu pracownikowi). Ceny rozpoczynają się od 149€ rocznie, ale z każdym kolejnym rokiem cena spada i można zaoszczędzić nawet 40%.

Niektórzy mogą skorzystać z bezpłatnych licencji:

  • 30 dniowy okres próbny,
  • bezpłatna licencja edukacyjna dla studentów (wymagany email w domenie uczelni) - szczegóły,
  • 30 dniowa wersja EAP (Early Access Program), czyli wersja beta środowiska, która jednak nie zawsze jest dostępna - szczegóły,
  • 6 miesięczna licencja dla użytkowników naszych kursów Technologii Webowych, Springa oraz Bootcampów.

Tworzenie projektu

IntelliJ IDEA Ultimate oferuje wsparcie dla Springa już na etapie tworzenia projektu. Posiada on graficzną nakładkę na stronę start.spring.io, dzięki której możesz wygenerować projekt Spring Boota z odpowiednimi starterami.

Po wybraniu opcji New Project, wybierz po lewej stronie Spring Initializr. Na pierwszym ekranie ustawiamy rzeczy charakterystyczne dla systemu budowania, czyli lokalizację projektu na dysku twardym, groupId, artifactId, główną nazwę pakietu i wersję Javy. Dodatkowo możemy wskazać, czy aplikacja będzie pakowana do postaci archiwum Jar (Java ARchive), czy war (Web ARchive). Druga opcja wykorzystywana jest wtedy, gdy planujemy uruchamiać kilka aplikacji na jednym serwerze. Aktualnie raczej rzadko się z tego korzysta, więc najczęściej będziemy tu wybierali opcję Jar.

Na drugim ekranie masz do wyboru wersję Spring Boota - jeżeli tworzysz nowy projekt, to najlepiej wybrać najnowszą dostępną wersję. Oprócz tego możemy dodać startery, czyli meta zależności, dzięki którym nasz projekt zyskuje dodatkowe możliwości. Przykładowo dodając starter Spring Web do projektu zostaną dodane zależności do Spring MVC, czy Tomcata, dzięki którym będziemy mogli tworzyć aplikacje webowe, natomiast Spring Data JPA doda wszystko co niezbędne do tworzenia aplikacji z relacyjnymi bazami danych, np. Hibernate.

Dzięki dodaniu odpowiednich starterów, Spring Boot zapewni nam dodatkowo domyślną konfigurację dla danej technologii. Przykładowo jeżeli w projekcie znajdzie się zależność do Spring Data JPA i H2, to Spring Boot skonfiguruje dla nas domyślne źródło danych.

Konfiguracja

Po utworzeniu projektu możesz przejść do jego konfiguracji. W przypadku Spring Boota głównym miejscem konfiguracji jest plik application.properties, który znajduje się w katalogu /src/main/resources.

IntelliJ IDEA Ultimate oferuje podpowiedzi składni w tym pliku na podobnej zasadzie jak działa to w plikach z rozszerzeniem .java. Nie musisz znać więc wszystkich nazw własności na pamięć, wystarczy, że wpiszesz kilka liter, a resztę możesz wygenerować.

Oprócz plików properties, wspierana jest także konfiguracja w formacie YAML.

Kurs Spring

Wykrywanie komponentów i automatycznych wiązań

IntelliJ będzie wykrywał komponenty Springa w trakcie pisania kodu, a dodatkowo będzie weryfikował to, czy wszystkie wymagane zależności są dostępne.

Dzięki tej opcji w prosty sposób możemy wykryć problemy typu:

  • brak odpowiedniej adnotacji w klasach komponentów,
  • błędna konfiguracja automatycznego skanowania komponentów / błędna struktura projektu,
  • konflikty w zależnościach, które można rozwiązać przez wykorzystanie profili, albo kwalifikatorów.

Podpowiadanie atrybutów w silnikach szablonów

Jeżeli tworzysz aplikację w oparciu o Spring MVC i widoki generowane po stronie serwera, to prawdopodobnie będziesz używał silnika szablonów o nazwie Thymeleaf. IntelliJ IDEA Ultimate potrafi wykrywać i podpowiadać w szablonach odwołania do atrybutów przekazywanych z poziomu kontrolerów.

Jest to bardzo użyteczne z tego względu, że błędy w szablonach możesz wykryć w prosty sposób bez uruchamiania aplikacji (a to może trwać co najmniej kilka - kilkanaście sekund).

Wygodna konfiguracja startowa

Dzięki dodatkowy opcjom w konfiguracji startowej możemy w wygodny sposób aktywować wybrany profil, ukryć banner startowy aplikacji, albo ustawić akcje, które mają być wykonane automatycznie przy aktualizacji projektu. Znacznie ułatwia to pracę i powoduje, że można znacząco zredukować liczbę restartów projektu.

Podsumowanie

Powyżej pokazałem Ci zaledwie podstawowe zalety, które daje IntelliJ IDEA Ultimate podczas tworzenia aplikacji z wykorzystaniem Springa. Jeżeli będziesz tworzył aplikację z wykorzystaniem tego frameworka, to najprawdopodobniej będzie to aplikacja webowa. IntelliJ IDEA Ultimate daje Ci wsparcie dla języków takich jak HTML, CSS, JavaScript, a także integrację z różnymi silnikami baz danych. Niestety żadne z tych funkcji nie są dostępne w bezpłatnej wersji Community, więc jeżeli nie masz dostępu do licencji i nie chcesz w nią na razie inwestować, to zachęcam do wypróbowania bezpłatnych alternatyw takich jak pakiet Spring Tool Suite w połączeniu ze środowiskiem Eclipse, albo Visual Studio Code.

Dyskusja i komentarze

Masz pytania do tego wpisu? Może chcesz się podzielić spostrzeżeniami? Zapraszamy dyskusji na naszej grupie na Facebooku.