Мне интересно, есть ли способ объединить REST API и пользовательский интерфейс Spring загрузочного приложения Webflux.Я использую React для пользовательского интерфейса.
В обычном приложении Spring MVC я могу использовать frontend-maven-plugin вместе с maven-resources-plugin для создания и копированиястатические ресурсы для целевого каталога.Примерно так:
<plugin>
<groupId>com.github.eirslett</groupId>
<artifactId>frontend-maven-plugin</artifactId>
<version>1.6</version>
<configuration>
<installDirectory>target</installDirectory>
</configuration>
<executions>
<execution>
<id>install node and npm</id>
<goals>
<goal>install-node-and-npm</goal>
</goals>
<configuration>
<nodeVersion>v10.15.0</nodeVersion>
<npmVersion>6.4.1</npmVersion>
</configuration>
</execution>
<execution>
<id>npm install</id>
<goals>
<goal>npm</goal>
</goals>
<configuration>
<arguments>install</arguments>
</configuration>
</execution>
<execution>
<id>webpack build dev</id>
<goals>
<goal>npm</goal>
</goals>
<phase>generate-resources</phase>
<configuration>
<arguments>run webpack:build</arguments>
<npmInheritsProxyConfigFromMaven>false</npmInheritsProxyConfigFromMaven>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>3.0.1</version>
<executions>
<execution>
<id>position-react-build</id>
<goals>
<goal>copy-resources</goal>
</goals>
<phase>prepare-package</phase>
<configuration>
<outputDirectory>${project.build.outputDirectory}/static</outputDirectory>
<resources>
<resource>
<directory>${frontendSrcDir}/build</directory>
<filtering>false</filtering>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
Все отлично работает.Но это может быть потому, что я использую встроенный Tomcat Server (по умолчанию для Spring Boot с Spring MVC).
Для второго подхода я хотел бы использовать Spring Boot Webflux.По умолчанию приложение будет работать на Netty.Я пытался применить ту же конфигурацию Maven.Но когда приложение запускается, оно не обрабатывает приложение ReactJs.