web-dev-qa-db-fra.com

Comment déployer l'application AngularJS et le service API Spring Restful sur le même domaine / serveur?

Je suis nouveau sur Spring et AngularJS. J'ai suivi les étapes ici pour construire l'API reposante back-end, et il envoie Json sur demande. Ainsi, selon le guide, lorsque j'exécute "mvn spring-boot: run", le serveur Tomcat démarre à localhost: 8080.

Ensuite, j'ai utilisé Yeoman angular pour construire mon angular. Et lorsque je lance "grunt serve" dans mon angular , l'application frontale s'exécute sur localhost: 9000.

Que dois-je faire pour que mon application angular puisse être servie avec mon serveur Springboot Tomcat sur le même domaine, disons localhost: 8080?

Y a-t-il un exemple de projet que je peux suivre? J'ai trouvé les projets suivants, mais je ne peux toujours pas le faire fonctionner car je n'ai pas beaucoup d'expérience sur 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

Vous devez prendre soit:

  • les fichiers construits (grunt build puis pratiquement tout dans le répertoire dist /)
  • les fichiers bruts (votre index.html et tous les JS en l'état)

et copiez-les dans l'un des dossiers suivants (je recommande/public /): http://spring.io/blog/2013/12/19/serving-static-web-content-with-spring-boot

Spring Boot ajoutera automatiquement des ressources Web statiques situées dans l'un des répertoires suivants:

/ META-INF/ressources /

/Ressources/

/statique/

/Publique/

Cela signifie que non seulement Spring Boot offre une approche simple pour créer des applications Java ou Groovy, vous pouvez également l'utiliser pour déployer facilement du code JavaScript côté client et le tester dans un environnement de serveur Web réel !

Cela va toutefois être pénible pour le développement, car vous devrez recopier les fichiers à chaque fois que vous apportez une modification au frontal. Pour la production, votre objectif doit être de déployer une copie versionnée des fichiers créés avec votre application Spring.

Pour le développement, vous voudrez peut-être envisager de laisser grunt servir le Angular et exécuter à la fois Tomcat et votre serveur grunt (est-ce un nœud?) Et activer les demandes croisées d'origine entre votre serveur frontal et votre serveur principal. = OR vous pouvez simplement copier le répertoire entier angular dans l'un des répertoires ci-dessus, mais c'est une approche à court terme).

18
pherris