如何将 angular 与 spring boot 集成以在 spring boot ?

我有使用 angular4 开发的后端 Spring Boot 应用程序和前端。由于这两个在部署时在不同的端口(8080,4200)上运行,因此不显示任何 UI。在本地,使用下面的启动 angular 服务器在 localhost:4200 上工作绝对正常并显示 Web 界面:


ng serve --proxy-config proxy.conf.json

其中 proxy.conf.json 有内容:


{

  "*": {

    "target": "http://localhost:8080",

    "secure": false,

    "logLevel": "debug"

  }

}

但在尝试与 springboot 应用程序(本地主机:8080)集成时则不然。可能,它需要在部署之前烘焙 ng 业务逻辑(节点/npm 安装等)。


所以我使用ng buildwhich 将生成的文件复制到输出目录 - src/main/resources/static ,现在它位于 spring-boot 应用程序路径中。启动 tomcat 在 localhost:8080 上仍然没有显示任何 UI。我确实在 chrome 选项卡上看到了 Angular 符号/图标,但在 html 页面上没有显示任何内容。


我还添加了一个控制器方法来返回 index.html,以便它可以在路径中提供静态文件。


@GetMapping("/")

public String index() {

    return "forward:/index.html";

}

但是这样做只会在网页上显示“forward:/index.html”字符串而不是 html 内容。我是否需要更改此 index.html 中的某些内容,以便它可以路由到我创建的 ng 组件?不知道更改 index.html 中的选择器是否重要。由于我的主要组件不是应用程序组件(默认情况下是根组件)而是登录组件,因此在 index.html 中我更改<app-root></app-root>为登录组件的选择器<app-login></app-login>;UI中仍然没有显示任何内容。


似乎 spring-boot 无法理解角度的东西以及如何路由到主要的 ng 组件。


下面是 index.html:


<!doctype html>

<html>

<head>

  <meta charset="utf-8">

  <title>Hello App</title>

  <base href="/">


  <meta name="viewport" content="width=device-width, initial-scale=1">

  <link rel="icon" type="image/x-icon" href="favicon.ico">

</head>

<body>

  <app-root></app-root>

<script type="text/javascript" src="runtime.js"></script><script type="text/javascript" src="polyfills.js"></script><script type="text/javascript" src="styles.js"></script><script type="text/javascript" src="vendor.js"></script><script type="text/javascript" src="main.js"></script></body>

</html>

项目结构:


-src

 -main

  -java

    - backend

      - AppController

      - AppService

      - Main.java

    - frontend

      - src

        - index.html

        - app

          -login

           - login.component.html

           - login.component.css

           - login.component.ts

          etc..


部署时如何让前端与后端服务器一起工作?我是否需要在 application.properties 中添加任何参数或配置,以便应用程序在启动时从 /resources 提供静态内容?我是否添加任何 resourceLocationHandler 为其提供服务?


烙印99
浏览 214回答 2
2回答

LEATH

请使用存档实用程序打开 jar 文件,看看其中是否有静态文件。如果它们可用,您需要告诉 Spring 您在地址栏中输入的 URL 实际上是 Angular 路由:@Controllerpublic class Routing {&nbsp; &nbsp; @RequestMapping({ "", "/login", "/products/**" })&nbsp; &nbsp; public String gui() {&nbsp; &nbsp; &nbsp; &nbsp; return "forward:/index.html";&nbsp; &nbsp; }}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java