如何在同一个域/服务器上部署AngularJS app和Spring Restful API服务?

问题描述 投票:26回答:1

我是Spring和AngularJS的新手。 我按照这里的步骤构建后端restful API,并根据请求发送Json。 因此,根据指南,当我运行“mvn spring-boot:run”时,tomcat服务器从localhost:8080开始。

然后我使用Yeoman角度生成器来构建我的角度应用程序。 当我在我的角度应用程序中运行“grunt serve”时,前端应用程序运行在localhost:9000。

我应该怎么做才能使我的角度应用程序可以与我在同一域上的Springboot tomcat服务器一起提供,比如localhost:8080?

我可以遵循一个示例项目吗? 我找到了以下项目,但仍然无法使其工作,因为我没有太多关于tomcat的背景知识。

  1. https://github.com/robharrop/spring-angularjs
  2. https://github.com/GermanoGiudici/angularjs-maven-tomcat-seed
  3. https://github.com/xvitcoder/spring-mvc-angularjs
angularjs spring tomcat spring-boot yeoman
1个回答
18
投票

你需要采取以下两种方式:

  • 构建的文件( grunt build然后基本上dist /目录中的所有内容)
  • 原始文件(您的index.html和所有JS原样)

并将它们复制到以下文件夹之一(我推荐/ public /):http://spring.io/blog/2013/12/19/serving-static-web-content-with-spring-boot

Spring Boot将自动添加位于以下任何目录中的静态Web资源:

/ META-INF /资源/

/资源/

/静态的/

/上市/

这意味着Spring Boot不仅提供了构建Java或Groovy应用程序的简单方法,还可以使用它轻松部署客户端JavaScript代码并在真实的Web服务器环境中对其进行测试!

这对于开发来说将是一种痛苦,因为每次对前端进行更改时都必须重新复制文件。 对于生产,您的目标应该是使用spring应用程序部署构建文件的版本化副本。

对于开发,您可能需要考虑让grunt提供Angular内容并运行Tomcat和您的grunt服务器(是节点吗?)并在前端和后端之间启用跨源请求。 或者你可以将整个angular目录复制到上面的目录之一,但这是一个短期的方法。

© www.soinside.com 2019 - 2024. All rights reserved.