Angular 404页,同时在同一端口中运行弹簧和角度传感器

Angular 404页,同时在同一端口中运行弹簧和角度传感器,angular,spring,spring-boot,Angular,Spring,Spring Boot,我创建了SpringBoot+angular 8应用程序,它在两个不同的端口(如8080和4200)上成功运行,没有任何问题。然后我决定在同一个端口(8080)上运行应用程序。我运行了ngbuild--prod,得到了dist文件夹。将Dist文件夹移动到spring应用程序中,该文件夹看起来像这样 对应的pom.xml如下所示 <plugin> <groupId>org.apache.maven.plugins</groupId>

我创建了SpringBoot+angular 8应用程序,它在两个不同的端口(如8080和4200)上成功运行,没有任何问题。然后我决定在同一个端口(8080)上运行应用程序。我运行了
ngbuild--prod
,得到了dist文件夹。将Dist文件夹移动到spring应用程序中,该文件夹看起来像这样

对应的pom.xml如下所示

  <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-resources-plugin</artifactId>
            <version>3.0.2</version>
            <configuration>
                  <outputDirectory>${project.build.directory}/target/classes/static/</outputDirectory >
                  <resources>
                      <resource>
                          <directory>${project.build.directory}/fleetManagement/dist/fleetManagement</directory >
                      </resource>
                  </resources>
                <nonFilteredFileExtensions>
                    <nonFilteredFileExtension>woff</nonFilteredFileExtension>
                    <nonFilteredFileExtension>ttf</nonFilteredFileExtension>
                    <nonFilteredFileExtension>woff2</nonFilteredFileExtension>
                    <nonFilteredFileExtension>eot</nonFilteredFileExtension>
                    <nonFilteredFileExtension>swf</nonFilteredFileExtension>
                    <nonFilteredFileExtension>ico</nonFilteredFileExtension>
                    <nonFilteredFileExtension>png</nonFilteredFileExtension>
                    <nonFilteredFileExtension>svg</nonFilteredFileExtension>
                    <nonFilteredFileExtension>jpg</nonFilteredFileExtension>
                    <nonFilteredFileExtension>jpeg</nonFilteredFileExtension>
                </nonFilteredFileExtensions>
            </configuration>
        </plugin>
发生了什么事 在
src/main/resources
文件夹中部署应用程序并复制Resources时,您希望Spring为您呈现前端应用程序。但是Spring是一个服务器,作为一个服务器,它为您提供您给他的配置

通过使用
server.servlet.context path=/api
,您告诉Spring:所有内容都将以“/api”作为前缀。。。因此,如果您尝试请求:
http://localhost:8080/
,Spring会告诉你它对这样一个URL一无所知,因为对他来说,所有东西都应该以
/api
作为前缀

很自然,你会说:那么,让我们访问
http://localhost:8080/api
。但这并不是那么容易。。。我还不知道到底发生了什么,但我猜您的
src/main/resources
src/main/resources/public
中有index.html文件。。。当您尝试访问
http://localhost:8080/api
它将尝试在
src/main/resources/{public}/api/index.html
中查找index.html文件。。。但它找不到。因此有例外

临时解决办法 我在VueJS和Spring Boot方面也遇到过类似的问题。在不浪费太多时间的情况下,我的解决方案是删除属性
server.servlet.context path=/api
,并手动将注释
@RequestMapping
作为控制器的前缀

@RestController
@RequestMapping("/api")
public class MyController {
    ...
}

应该可以,但我不是一个超级粉丝。

这可能与你的问题有关。你的应用程序中是否有属性
server.servlet.context path=???
属性?可能是同一个@RUAROThibault的副本,是的,谢谢你的快速响应,但解决方案不起作用(
@RestController
@RequestMapping("/api")
public class MyController {
    ...
}