web-dev-qa-db-ja.com

同じドメイン/サーバーにAngularJSアプリとSpring Restful APIサービスをデプロイする方法は?

SpringとAngularJSは初めてです。手順 here に従ってバックエンドのRESTful APIを構築し、リクエストに応じてJsonを送信します。したがって、ガイドによると、「mvn spring-boot:run」を実行すると、Tomcatサーバーはlocalhost:8080で起動します。

次に、Yeoman angularジェネレーターを使用してangularアプリをビルドしました。 angularアプリ内で "grunt serve"を実行すると、フロントエンドアプリはlocalhost:9000で実行されます。

angularアプリを同じドメイン、たとえばlocalhost:8080のSpringboot Tomcatサーバーと一緒に提供できるようにするにはどうすればよいですか?

フォローできるサンプルプロジェクトはありますか?次のプロジェクトを見つけましたが、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
26
Hengwei

次のいずれかを取る必要があります。

  • ビルドされたファイル(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/resources /

/ resources /

/静的/

/公衆/

つまり、Spring BootはJavaまたはGroovyアプリを構築するためのシンプルなアプローチを提供するだけでなく、クライアントサイドJavaScriptコードを簡単にデプロイして実際のWebサーバー環境内でテストすることもできます!

ただし、フロントエンドに変更を加えるたびにファイルを再コピーする必要があるため、これは開発の苦痛になります。実稼働環境での目標は、ビルドされたファイルのバージョン付きコピーをSpringアプリにデプロイすることです。

開発のために、gruntにAngularコンテンツを提供し、Tomcatとgruntサーバー(ノードですか?)の両方を実行し、フロントエンドとバックエンドの間でクロスオリジンリクエストを有効にすることを検討してください。 OR全体のangularディレクトリを上記のディレクトリのいずれかにコピーすることもできますが、これは短期的なアプローチです。

18
pherris