Przejdź do treści

Spring Boot

Serwer Amazon EC2 i SSL od Let’s encrypt w aplikacji Spring Boot

Szyfrowanie ruchu HTTP jest już standardem. Przeglądarki często blokują dużo funkcji, jeśli nasza aplikacja nie używa SSL do komunikacji pomiędzy frontendem, a backendem. Let’s encrypt pozwala na wygenerowanie takiego certyfikatu całkiem za darmo. Jest on co prawda ważny tylko przez 3 miesiące, ale możemy go bez problemu odnowić. W poście przyjrzymy się jak możemy taki… Czytaj dalej »Serwer Amazon EC2 i SSL od Let’s encrypt w aplikacji Spring Boot

Spring Boot + Swagger UI

Tworząc aplikację w Spring Boocie, która udostępnia API przez web serwisy, czasem potrzebujemy wejść z nią w jakąś interakcję. Czy to w celach testowych, czy po prostu uruchomić nasz serwis, aby wykonał jakąś czynność. Możemy w tym celu użyć różnych narzędzi jak Postman, curl czy chociażby przeglądarki jeśli chcemy wykonać zapytanie GET. Jednak te narzędzia nie są świadome, jakich danych oczekuje nasz serwis oraz jakie endpointy są w nim dostępne. Możemy oczywiście w tym celu stworzyć sobie jakiś interfejs użytkownika, przez który będziemy mogli podejmować interakcję z aplikacją, jednak wymaga to jakiegoś nakładu pracy. I tutaj z pomocą może nam przyjść Swagger UI. Po prostu dołączamy go do projektu, a on sam przeskanuje aplikację i wygeneruje nam stronę www, przez którą będziemy mogli podejmować interakcję z naszą aplikacją. Dodatkowo możemy udokumentować API, dodając odpowiednie adnotacje w kodzie.

Czytaj dalej »Spring Boot + Swagger UI

Docker + Spring Boot – zamykamy aplikację w kontenerze Dockerowym

Kontenery Dockera stały się bardzo popularne. Bardzo ułatwiają tworzenie i deployment aplikacji. Szybko możemy zbudować kontener wraz z wszystkimi zależnościami projektu i zdeployować go na środowisku testowym/produkcyjnym lub wysłać do innych zespołów, które korzystają z nasze aplikacji. Jeśli pracujemy z mikroserwisami, jest to idealne rozwiązanie, aby uruchomić wszystkie potrzebne serwisy, a następnie skupić się na rozwijaniu swojego. Pozwala to też bardzo szybko uruchamiać środowiska testowe całej naszej aplikacji, na przykład na potrzeby CI/CD.

W tym wpisie pokażę jak zamknąć prostą aplikację napisaną w Spring Boocie w kontenerze. Dodatkowo pokażę też kilka sztuczek, przydatnych w sprawdzaniu co się dzieje z naszym kontenerem, oraz jak wysłać nasz kontener do zewnętrznego repozytorium Docker Hub. Zaczynajmy!

Czytaj dalej »Docker + Spring Boot – zamykamy aplikację w kontenerze Dockerowym
Spring Mail

Spring Mail + Spring Boot – łatwe wysyłanie maili z aplikacji w Javie

Duża ilość tworzonych aplikacji potrzebuje w którymś momencie wysłać maila do użytkownika. Czy to maila rejestracyjnego, czy jakieś inne powiadomienie dla użytkownika. W Spring Boocie jest do tego odpowiedni moduł (Spring Boot Starter Mail) który nam to bardzo ułatwia. W tym poście przedstawię jak go skonfigurować i użyć w przykładowym projekcie.

Czytaj dalej »Spring Mail + Spring Boot – łatwe wysyłanie maili z aplikacji w Javie

Spring Boot – Spring Data JPA część II: Powiązania między tabelami

W pierwszej części postu Spring Boot – Interakcja z bazą danych, czyli Spring Data JPA, opisywałem jak się połączyć z bazą i jak stworzyć pierwszą encję. W tej części postaram się pokazać, jak możemy zdefiniować powiązania pomiędzy encjami oraz jak możemy wykonywać zapytania z ich użyciem.

Czytaj dalej »Spring Boot – Spring Data JPA część II: Powiązania między tabelami

Wsparcie dla pola typu JSONB w PostgreSQL dla Spring Data JPA + Hibernate

Od wersji 9.4 PostgreSQL oferuje nowy typ danych, którym jest JSONB. Wcześniej w wersji 9.2 został wprowadzony typ JSON, który przechowuje dane w tym formacie w wersji tekstowej. Wymagało to parsowania danych przed wykonaniem jakiejkolwiek operacji na nich. JSONB przechowuje zdekomponowane dane binarne, dzięki czemu mamy do nich szybszy dostęp. Dodatkowo możemy ich użyć do tworzenia indeksów, joinów itp.

Wygląda to bardzo pięknie i równie dobrze sprawdza się w praktyce, jednak Hibernate nie wspiera natywnie tego rodzaju pól. Można to jednak obejść, tworząc własny typ danych oraz mówiąc mu jak może ten typ zserializować do formatu JSON. W tym poście przejdziemy przez proces tworzenia własnego typu.

Czytaj dalej »Wsparcie dla pola typu JSONB w PostgreSQL dla Spring Data JPA + Hibernate
Spring Boot Test

Spring Boot Test – testowanie aplikacji w Spring Boocie

Spring Boot Test to zestaw narzędzi ułatwiający nam testowanie aplikacji napisanych z użyciem Springa. Testy w aplikacji są bardzo ważnym elementem, który zaniedbany szybko odbije się na jakości kodu i ilości błędów, które się pojawią. Ilość pracy, którą trzeba później włożyć w naprawienie zaniedbanych testów, jest nieporównywalnie duża do czasu, który można zainwestować, tworząc je od razu. Testowanie jest ważne z kilku powodów:

  • Łatwo możemy znaleźć błędy w naszym kodzie,
  • Pomagają w utrzymaniu kodu – dają pewność, że nie zepsuliśmy czegoś przy wprowadzaniu zmian,
  • Dokumentuje użycie – można zaglądnąć do kodu testów, aby dowiedzieć się, jak używać jakiejś biblioteki, oraz pozwalają na szybkie i łatwe sprawdzenie zachowania biblioteki/języka,
  • Dokumentują założenia projektowe – w testach możemy wyrazić oczekiwane zachowanie aplikacji, bywa, że ktoś przeoczy jakieś założenia w projekcie, lub nie dopilnuje, aby wszystko działało, tak jak trzeba przy zmianach. Jeśli mamy dobre testy – one powinny to wyłapać.

Często inne osoby, które będą pracować z naszym kodem, mogą łatwo coś zepsuć. Testy po pierwsze dopilnują, aby tak się nie stało. A po drugie dają pewność osobie, która pracuje z kodem, że nic nie zepsuła. Dzięki temu może szybciej skończyć zmiany i wdrożyć nową funkcjonalność, zamiast marnować czas na sprawdzanie, czy wszystko działa, tak jak należy.

Czytaj dalej »Spring Boot Test – testowanie aplikacji w Spring Boocie

Spring Boot Web – Przekazywanie zmiennych do aplikacji przez URL czyli użycie @RequestParam i @PathVariable

W poprzednich wpisach pokazałem jak stworzyć prostą aplikację z pomocą Spring Boota. Dzisiaj chciałbym rozszeżyć tamten wpis o temat przekazywania zmiennych do aplikacji używając URL. Zakładam, że wiesz już jak stworzyć podstawowy szkielet działającej aplikacji, jeśli nie to zapraszam do przeczytania wpisu na ten temat pod adresem: http://blog.mloza.pl/spring-boot-szybkie-tworzenie-aplikacji-web-w-javie/.

W pierwszym poście na temat tworzenia aplikacji w Spring Boot pokazywałem jak możemy zmapować adres url na metodę w kontrolerze. Nie wspomniałem wtedy o tym, że możemy również w adresie zawrzeć parametry które mogą być przekazywane do naszej funkcji. Jest to bardzo użyteczne i szeroko wykorzystywane w aplikacjach. Przykładowo, możemy napisać metodę która ma za zadanie wyciągnać zawartość wpisu na blogu z bazy danych. Zamiast tworzyć oddzielne metody dla każdego wpisu i ręcznie je mapować, możemy stworzyć jedną metodę której będziemy przekazywać identyfikator wpisu. Na podstawie tego identyfikatora, metoda znajdzie odpowiedni wpis i zwróci go do przeglądarki.

Czytaj dalej »Spring Boot Web – Przekazywanie zmiennych do aplikacji przez URL czyli użycie @RequestParam i @PathVariable