为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

烙印99 2021-08-19 18:29:28
我有使用 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 为其提供服务?
查看完整描述

2 回答

?
LEATH

TA贡献1936条经验 获得超6个赞

请使用存档实用程序打开 jar 文件,看看其中是否有静态文件。如果它们可用,您需要告诉 Spring 您在地址栏中输入的 URL 实际上是 Angular 路由:


@Controller

public class Routing {


    @RequestMapping({ "", "/login", "/products/**" })

    public String gui() {

        return "forward:/index.html";

    }

}


查看完整回答
反对 回复 2021-08-19
  • 2 回答
  • 0 关注
  • 228 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信