我是 Spring 和 AngularJS 的新手。我按照步骤 here构建后端restful API,并根据请求发送Json。因此,根据指南,当我运行“mvn spring-boot:run”时,tomcat 服务器从 localhost:8080 开始。
然后我使用 Yeoman Angular 生成器来构建我的 Angular 应用程序。当我在 Angular 应用程序中运行“grunt serve”时,前端应用程序在 localhost:9000 运行。
我应该怎么做才能让我的 Angular 应用程序与我的 Springboot Tomcat 服务器一起在同一个域上提供服务,比如 localhost:8080 ?
是否有我可以遵循的示例项目?我找到了以下项目,但由于我对 tomcat 没有太多背景,因此仍然无法使其工作。
最佳答案
您需要采取以下任一方式:
- 构建的文件(
grunt build
然后基本上是 dist/目录中的所有内容) - 原始文件(您的 index.html 和所有 JS 原样)
并将它们复制到以下文件夹之一(我推荐/public/):http://spring.io/blog/2013/12/19/serving-static-web-content-with-spring-boot
Spring Boot will automatically add static web resources located within any of the following directories:
/META-INF/resources/
/resources/
/static/
/public/
This means that not only does Spring Boot offer a simple approach to building Java or Groovy apps, you can also use it to easily deploy client-side JavaScript code and test it within a real web server environment!
这对开发来说会很痛苦,但是因为每次对前端进行更改时都必须重新复制文件。对于生产,您的目标应该是使用您的 spring 应用程序部署构建文件的版本化副本。
对于开发,您可能需要考虑让 grunt 提供 Angular 内容并同时运行 Tomcat 和 grunt 服务器(它是节点吗?)并在前端和后端之间启用跨源请求。或者您可以将整个 angular 目录复制到上述目录之一,但这是一种短期方法。
关于angularjs - 如何在同一个域/服务器上部署 AngularJS 应用程序和 Spring Restful API 服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23920508/