Обслуживание содержимого внешнего интерфейса с помощью Spring Boot и Tomcat - PullRequest
0 голосов
/ 25 апреля 2019

Я собираюсь создать очень типичный и не требующий ресурсов бэкэнд-проект, и мой общий вопрос - как организовать его лучше.

Бэкэнд-часть предоставляет REST API издесь будут использоваться Java и Spring Boot.Вопрос о внедрении Tomcat или развертывании WAR все еще остается открытым.Я бы предпочел развернуть WAR, если другой вариант не имеет некоторых преимуществ для моего случая.Для разработки я использую Eclipse и Maven, и в конечном итоге все это будет работать на RHEL.

Интерфейсная часть - это веб-приложение, реализующее пользовательский интерфейс, который обращается к API.Здесь я собираюсь использовать React.

В ряде учебных пособий предлагается использовать frontend-maven-plugin для обслуживания содержимого веб-интерфейса с помощью Spring Boot (с использованием узла и npm под капотом).Это выглядит красиво и компактно.В результате у нас есть веб-приложение по адресу:

http://my.domain:8080/index.html

, которое обращается к API по адресу:

http://my.domain:8080/api/...

Но никто из тех, кого я нашел до сих пор, не предлагает запустить веб-приложение по умолчанию http порт (80) по адресу:

http://my.domain/index.html

, который я считаю необходимым для реального производства.

Есть также способы перенаправления вызовов с порта 80 на 8080, ноэто не похоже на хитрый патч?Сам Apache Tomcat может быть (по-видимому) настроен для работы на порте 80, но мне это тоже не нравится.

Итак, есть ли способ организовать такой проект в целом (желательно управляемый)Spring Boot и Tomcat) и его части не «разбросаны» по разным независимым сервисам?

1 Ответ

0 голосов
/ 25 апреля 2019

Вы можете использовать папку «webapp» и эту конфигурацию:

@Configuration
public class MvcConfiguration implements WebMvcConfigurer {


@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
    registry.addResourceHandler("/**").addResourceLocations("/");
}

@Override
public void addViewControllers(ViewControllerRegistry registry) {
    registry.addViewController("/").setViewName("/index.html");
    }
}
...