Реализация Spring Boot с ReactJS

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


Чтобы мой проект работал, я заметил, что у меня должны быть запущены и мой сервер nodejs, и мой встроенный сервер tomcat с весенней загрузкой (я использовал yarn start для запуска приложения реакции). Всегда ли так будет? Должен ли быть запущен сервер nodejs, чтобы отобразить ответ весенней загрузки в моем пользовательском интерфейсе reactjs? Или у меня может быть только мой сервер tomcat.


Кроме того, я заметил, что в моем приложении реакции он запускается на localhost: 3000, тогда как мое приложение весенней загрузки запускается на localhost: 9080. А в моем package.json прокси определен как localhost:8080. Как сделать так, чтобы оба приложения находились под одним хостом и обслуживались портом?

Различные порты будут только во время разработки, поэтому вы можете использовать инструменты разработки для обеих платформ по отдельности. В производственной среде React будет обслуживаться как статические ресурсы HTML / CSS / JS. Прокси-сервер разработки предназначен для репликации производственной среды, в которой React будет обслуживаться как статические ресурсы, выполняя HTTP-вызовы к конечным точкам в Spring.

Alexander Staroselsky 26.09.2018 17:13

@AlexanderStaroselsky Хм, но как создается файл jar?

Robin 27.09.2018 03:57
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
2
1 323
2

Ответы 2

@Robin, около 9 месяцев назад я сделал проект своей последней компании, использующей те же технологии. Я запустил его в производство перед отъездом, и он прошел успешно! У меня есть шаблон этого проекта https://github.com/gasparteixeira/springboot-reactjs-app.

Взгляните на структуру. Пример: для разработки продолжайте использовать инструменты загрузки spring и yarn start для reactjs! Но когда вы собираетесь сгенерировать jar / war, убедитесь, что вы создали (сборку пряжи) внутри своего проекта реакции.

Вы закомментировали раздел выполнения npm в своем pom.xml. Как придешь?

Robben 28.09.2018 02:52

@Robben, взгляните на этот плагин Maven (mvnrepository.com/artifact/com.github.eirslett/…). В основном вы можете выполнять команды npm / node, когда ваш mvn строится. Взгляните на ссылку pom.xml выше.

Gaspar Teixeira 28.09.2018 23:04

Следуйте моим нижеприведенным инструкциям, и все будет хорошо.

  1. В вашем весеннем загрузочном приложении в разделе application / properties не указывайте какой-либо порт, поэтому ваша загрузка sprig может работать по умолчанию на 8080 или 9080, если вы можете работать на нем.

  2. Создайте толстую банку для своего проекта весенней загрузки

  3. разверните его на /opt/your project name на сервере.

  4. запустите загрузочное приложение с nohup java -jar jarname & или создайте для него службу, прочтите весеннюю документацию, чтобы запустить свою банку как службу.

  5. он запустит ваше приложение на 8090 или 8080, как вы хотите.

Теперь давайте перейдем к вашему клиентскому приложению, которое реагирует.

Чтобы запустить ваше клиентское приложение, есть несколько способов.

  1. установите сервер apache или ngnix на свой компьютер
  2. запустите сборку пряжи, которая сгенерирует ваши оптимизированные файлы в папке сборки, убедитесь, что вы указали URL-адрес вашего приложения.
  3. развернуть все сгенерированные файлы в корневой папке apache/ngnix для ex /var/www/html

Теперь, если у вас есть, скажем, доменное имя example.com, тогда ваше внешнее приложение может быть доступно с http://www.example.com, а серверные API доступны на http://www.example.com:8080, убедитесь, что разрешены 8080 и 80.

Теперь вы думаете, что нет, я также хочу, чтобы мой apis был доступен для www.example.com, тогда сначала убедитесь, что контекстный путь определен вашим apis, чтобы они были доступны с базовым путем, допустим, /api - ваш базовый путь.

затем определите прокси на сервере apache или ngnix.

<VirtualHost *:80>
  ProxyRequests Off
  ProxyPass /api http://localhost:8080/api
  ProxyPassReverse /api http://localhost:8080/api
</VirtualHost>

Теперь вы можете также получить доступ к своему API на www.example.com/api

Другие вопросы по теме