Kurs Java

Starter projektu

W tym rozdziale znajdziesz 1 film (materiał premium).
Zaczynamy! Na początek krótki wstęp o tym, jak wygląda nasz projekt i czego możesz się spodziewać.

Aplikacja jest jednym projektem Spring Boot w wersji 2.x.x (oraz 3.x.x) i jest on gotowy na Javę 17 (wymaga minimum wersji 8 dla Spring Boot 2.x.x oraz wersji 17 dla Spring Boot 3). Każda funkcjonalność (rejestracja użytkownika, Moje konto, logowanie itd.) stanowi wyodrębniony zestaw klas w dedykowanym pakiecie. Dzięki temu projekt może być łatwo rozszerzany o nowe funkcjonalności, a modyfikacja obecnych nie wymaga przebudowy aplikacji w innych miejscach. Wyjątkiem od tej reguły są części wspólne, używane przez wszystkie lub kilka modułów (części wspólne znajdują się w pakiecie i folderze application i będziemy o nich mówić za chwilę).

Projekt jest przygotowany do pracy zarówno z IDE Eclipse, jak i IntelliJ. Pamiętaj, że najpierw musisz mieć zainstalowanego i skonfigurowanego Mavena. W razie czego polecamy nasz darmowy starter w postaci poniższych linków:
Struktura projektu z częściowo rozwiniętymi pakietami i folderami wygląda tak, jak na zdjęciu poniżej (w sumie przygotowanych zostało aż 129 klas, stąd spora część pozostaje zwinięta na zdjęciu):
Backend
Eclipse - Okno tworzenia projektu
Frontend
Eclipse - Okno ustawień nowego projektu
Drogowskaz. Jak widzisz struktura naszego projektu startappa-spring-boot, jest zgodna z typowym projektem Spring Boot. Dokładne wyjaśnienie wszystkich elementów takiego projektu znajdziesz w naszej bazie wiedzy w rozdziale Spring Boot - Projekt startowy.

Projekty startappa-spring-boot i startappa-angular to obecnie dwa Mavenowe moduły tworzące jedną aplikację startappa-light. Modułowość opisujemy w rozdziale Uruchomienie frontendu i backendu w paragrafie Zawartość katalogu z aplikacją.

Uwagi dodatkowe do powyższego zdjęcia.
Elementy powiązane tematycznie między backendem a frontendem zostały oznaczone tymi samymi kolorami (kolorowe kwadraty przed nazwami).

Domena aplikacji

W pakiecie application znajdują się klasy Java, które należą do domeny projektu. To na nich opiera się działanie całej aplikacji, one są jej centralną częścią, wokół której wszystko się kręci. Oto jak wygląda pakiet klas encyjnych (domenowych) naszej aplikacji:
Domena
W celu uproszczenia nauki Springa i Hibernate'a postanowiliśmy, że w przeciwieństwie do klas serwisów i kontrolerów powyższe encje domenowe będą współdzielone i publiczne, ponieważ tak naprawdę duża część z wydzielonych zagadnień biznesowych operuje na większości z tych klas.

Podpowiedź. Domena aplikacji - Zbiór nazwanych elementów aplikacji, które razem tworzą obszar jej działań. Najczęściej domenę tworzą podmioty występujące w rzeczywistości. Wśród nich można wyodrębnić motyw przewodni. W naszej aplikacji jest to element (Item). Natomiast w aplikacji do obsługi VOD (Video On Demand) będzie to film (Movie), a w aplikacji do zarządzania dokumentami - dokument (Document). Każdy system niezależnie od tego, czy jego motywem przewodnim jest wydarzenia muzyczne, bilet na mecz, czy produkt, operuje w ramach określonej domeny.

Dobrze jest nie przywiązywać się w trakcie nauki tylko do jednego obszaru (wspomnianych filmów albo wydarzeń sportowych). Z tego powodu nasza aplikacja operuje na ogólnym pojęciu - element (z ang. item), dzięki czemu jest idealnym wzorcem do tworzenia dowolnych rodzajów aplikacji. Podstawiając pod item inne słowo, podstawowe zasady działania nie zmieniają się prawie wcale. Dlaczego? Bo te słowa to tylko nazwy obiektów z danej dziedziny życia. Ważne są relacje, które zachodzą między tymi obiektami.

Na przykład film, tak jak nasze itemy, należy do konkretnej kategorii (gatunku - komedia, fantastyka, dramat) lub typu (serial, pełnometrażowy, animowany). Może mieć też status ("W przygotowaniu", "W dystrybucji", "Premiera"), jak również dowolne atrybuty (na przykład nagrody - "Oscar", "Złoty Glob", "BAFTA").

Tak więc, jak będą wyglądać nazwy klas w aplikacji VOD?

Item to może być Movie
Category to będzie pewnie MovieGenre - (komedia, fantastyka, dramat)
Type nazwiemy pewnie MovieType - (serial, pełnometrażowy, animowany)
Status to precyzyjniej ujmując MovieStatus - ("W przygotowaniu", "W dystrybucji", "Premiera")
Attribute to może być na przykład MovieAward - ("Oscar", "Złoty Glob", "BAFTA")

A jak to będzie wyglądać w przypadku aplikacji do zarządzania dokumentami?

Item to będzie Document
Category to zwykle jest po prostu DocumentCategory - (faktura, rachunek, umowa, świadectwo, wniosek)
Type nazwiemy pewnie podobnie, czyli DocumentType - (PDF, Word, Excel)
Status to raczej też będzie Status - ("Przyjęty", "Zatwierdzony", "Wydany", "Odrzucony")
Attribute to może być na przykład Attribute - ("Oryginał", "Kopia", "Priorytetowy", "Wymagający akceptacji")
Drogowskaz. Od tego miejsca przedstawiamy tylko zajawki kolejnych paragrafów, które znajdują się w tym rozdziale w wersji płatnej. Jesteśmy transparentni, dlatego staramy się pokazać jak najwięcej informacji o tym kursie, ponieważ zależy nam, abyś za darmo dowiedział(a) się, jakiej jakości możesz się u nas spodziewać.
W przypadku dokumentów mamy jeszcze załączniki. Tylko że w zasadzie taki załącznik to zwykle też dokument, tyle że podpinany pod inny dokument. Zasadniczą kwestią jest to, że taki dokument może mieć wiele podpiętych załączników. Natomiast taka relacja ...

Jak to wszystko działa?

Na tym etapie zakładamy, że mniej więcej orientujesz się, jaki jest ogólny schemat działania aplikacji webowych. Natomiast na wszelki wypadek przypomnimy parę kwestii, tak na rozgrzewkę. Wszystko zaczyna się w rozdziale Spring Boot - Aplikacja Webowa. Tam przedstawiamy ogólny zarys tego, co jest czym jeśli chodzi o technologie oraz infrastrukturę.

To, na czym skupimy się teraz, jest częścią wspomnianego rozdziału i bardzo mocno będzie związane z tym kursem. Przypomnijmy zatem, że jeśli mamy przeglądarkę, z której korzysta użytkownik, to tak naprawdę tam zaczyna się już aplikacja webowa, w tej przeglądarce. Tam znajduje się tak zwany frontend.

Druga część aplikacji webowej znajduje się po stronie serwera i jest to nazywane backendem. Frontend komunikuje się (wymienia dane) z backendem poprzez protokół http ...

Spring Boot

Wracamy do Spring Boota. Co nam daje zastosowanie tego rozwiązania? Przede wszystkim otrzymujemy szablon projektu, który poprzez dodanie odpowiednich zależności w pliku pom.xml Mavena pozwala nam na wystartowanie "pustej" aplikacji. Prawdziwym hitem jest to, że razem ze Spring Bootem dostajemy wbudowanego Tomcata ...

Struktura backendu aplikacji

Zgodnie z dobrymi praktykami w backendzie na Springu powinniśmy dla każdej funkcjonalności utworzyć trzy warstwy
...

Przepływ danych w aplikacji

Przepływ danych w aplikacji to z angielskiego tak zwany flow. I właśnie o tym chcemy zająć się w tym krótkim paragrafie. W zasadzie większość zadań typowej aplikacji można przedstawić jako ciąg następujących wywołań w kodzie (tworzącego flow) ...
...
Podpowiedź. Trochę się tu powtórzymy, ale to jest bardzo ważny moment w kursie, który musisz dobrze zrozumieć. Kontrolery, serwisy i repozytoria są reprezentowane przez klasy w Javie. Tak więc, jeśli mamy na przykład proces rejestracji użytkownika, tworzymy wtedy:

Wstrzykiwanie zależności

Po otrzymaniu requesta http przenoszącego dane w formacie JSON Spring przekształca JSON-a na obiekt Java. Dzięki temu dane wysłane z przeglądarki (na przykład z formularza) "magicznie" stają się obiektem, którego możemy wykorzystać w dowolny sposób. Najczęściej w kontrolerze robimy tylko tyle, że bierzemy ten obiekt i uruchamiamy metodę serwisu. Pytanie, skąd tam pojawia się obiekt serwisu? Serwis znajduje się w polu, ponieważ Spring wstrzyknął go tam w trakcie startu Tomcata (konkretnie podczas inicjalizacji kontenera Springa). Tak samo później w klasie serwisu mamy dostęp do obiektu repozytorium, ponieważ został on tam wstrzyknięty.

W kodzie rejestracji użytkownika, który będziemy omawiać w następnych dwóch rozdziałach, zobaczysz dokładnie to, o czym tu piszemy. Pokażemy Ci, gdzie request http jest przechwytywany i co dalej dzieje się z obiektem, który z niego powstał. Dowiesz się, gdzie następuje zapis do bazy i co robimy dalej, aby przeglądarka dostała odpowiedź.
Drogowskaz. Nie wiesz, jak działa wstrzykiwanie w Springu? W takim razie udaj się teraz do naszego Kursu Spring do rozdziału Spring - Wstrzykiwanie zależności - część 1. Natomiast, jeśli czujesz, że nie do końca jeszcze rozumiesz ideę kontenera Springa, to znaczy, że potrzebujesz wrócić do rozdziału Beany i stereotypy.

Przygotowanie danych początkowych (słownikowych)

W ramach pakietu application znajduje się pakiet service, a w nim klasa (z interfejsem), która służy nam do zainicjowania danych początkowych w aplikacji. Dane te, nazywane też słownikowymi są wprowadzane do bazy raz ...

Stale się rozwijamy, a więc bądź na bieżąco!
Na ten adres będziemy przesyłać informacje o ważniejszych aktualizacjach, a także o nowych materiałach pojawiających się na stronie.
Polub nas na Facebooku:
Nasi partnerzy: stackshare
Javappa to również profesjonalne usługi programistyczne oparte o technologie JAVA. Jeśli chesz nawiązać z nami kontakt w celu uzyskania doradztwa bądź stworzenia aplikacji webowej powinieneś poznać nasze doświadczenia.
Kliknij O nas .


Pozycjonowanie stron: Grupa TENSE