Spring Boot 不仅仅是一个 REST API 服务器

许多开发者认为 Spring Boot 仅用于提供 JSON 数据。他们认为必须将 React 或 Vue 应用托管在像 Vercel 或 AWS 这样的独立服务器上。

这是一个误区。

Spring Boot 内置了 Apache Tomcat 服务器。这意味着你可以在单个 JAR 文件中构建全栈应用程序。

使用单个 JAR 文件可以带来三个主要优势:

  • 零 CORS 问题:你的前端和后端使用相同的端口和域名。
  • 更低的成本:你不需要独立的 Node.js 服务器。一个 Linux 服务器或 Docker 容器即可运行所有内容。
  • 部署简单:一个构建流程即可同时处理 UI 和服务器。

以下是将 UI 包含在 Spring Boot 中的四种方式:

  1. 服务端模板渲染 (SSR) 使用 Thymeleaf 在服务器端渲染 HTML。你只需在 Maven 文件中添加 starter 依赖,并使用 Controller 返回 HTML 模板。这种方式简单且快速。

  2. Vaadin Vaadin 让你仅使用 Java 即可构建现代 Web 应用。你不需要编写 JavaScript 或 CSS。Vaadin 会在后台处理 React 组件并通过 Tomcat 提供服务。这对于想要避免前端复杂性的 Java 开发者来说非常棒。

  3. JSF (JavaServer Faces) JSF 是企业级系统的强大选择。你可以将其与 PrimeFaces 或 BootsFaces 结合使用,以获得高质量的组件。你只需要在 Spring 配置中注册 FacesServlet 即可。

  4. Indie Hacker 的做法 (SPA 集成) 你可以构建一个 React 或 Vite 应用,然后将构建后的文件移动到 src/main/resources/static 文件夹中。

为了实现自动化,可以使用 frontend-maven-plugin。它会在 Maven 构建期间运行 npm install 和 npm build。

给 React 用户的一个小贴士:如果你使用了 React Router,请创建一个 Controller 将未知路径重定向到 index.html。这可以防止用户刷新页面时出现 404 错误。

别再寻找额外的服务器了。发挥你内置 Tomcat 的威力吧。

来源:https://dev.to/ganigurgah/spring-boot-is-not-just-a-rest-api-server-50hh