Wariant 1 jeden proces serwera API gospodarzem odpoczynku i kolejny proces serwera hostingu kątowa UI
Ta opcja jest zalecana opcja w ciągu MicroServices architektura gdzie poszczególne API (lub mały związane oparciu grupa interfejsów API) są uruchamiane i skalowane oddzielnie poprzez hostowanie ich w oddzielnych procesach serwera. W takich sytuacjach, jeśli Angularny interfejs użytkownika jest również połączony z interfejsami API REST, oznacza to, że każda poprawka lub rozszerzenie w interfejsie Angular wymagałoby przebudowy i przeniesienia usług. A kiedy zaczniemy to robić, to pokonamy cel architektury opartej na Microservices.
Dlatego w takiej architekturze jedna lub więcej instancji serwera będzie obsługiwać wyłącznie interfejs Angular. Angularny interfejs użytkownika z kolei wywoływałby poszczególne interfejsy API za pośrednictwem bramy API przy użyciu mechanizmu wykrywania usług. Architektura oparta na mikroserwisach nie jest jednak trywialna - jest skomplikowana i zawiera wiele ruchomych części. Taki poziom złożoności można uzasadnić w przypadku dużych projektów.
Opcja 2 Jeden proces serwera hostingu zarówno REST API i kątowe UI
Ta opcja jest zalecana opcja dla małych i średnich projektów, w których baza użytkowników jest kilkuset użytkowników.
W takich projektach utwórz pojedyncze repozytorium, w którym projekt Maven będzie zawierał dwa podmoduły - jeden dla interfejsów REST API i drugi dla interfejsu Angular.
Użyj wtyczki Maven "frontend-maven-plugin", aby zbudować część interfejsu. Spowoduje to automatyczne pobranie określonej wersji NodeJs i wywołanie odpowiednich poleceń npm w celu zbudowania projektu Angular. Na koniec, używając elementu Maven, skopiuj folder Angular dist do folderu statycznego Spring Boot w folderze resources. (W pliku .gitignore wyklucz folder statyczny, aby pliki dystrybucji kątowej nie były zaznaczone w elemencie źródłowym razem z interfejsami API usług REST).
Teraz, po uruchomieniu kompilacji Java, automatycznie dołącza się do niej folder statyczny, który będzie teraz obsługiwał zarówno interfejsy API, jak i interfejs Angular.
Właściwość 'application.properties' jest tym, czego potrzebuję. Dzięki, spróbuję. – user2138356