Spring Boot 后端与前端分离式连接实战指南

冬涛君_2138

冬涛君_2138

2026-10-29

963人浏览

原创

Spring Boot 后端与前端分离式连接实战指南

本文详解 spring boot 如何安全、规范地与现代前端(如 vue/react)对接,涵盖跨域配置、restful 接口设计、统一响应封装及生产级注意事项,助你从模板渲染平滑升级为前后端分离架构。

本文详解 spring boot 如何安全、规范地与现代前端(如 vue/react)对接,涵盖跨域配置、restful 接口设计、统一响应封装及生产级注意事项,助你从模板渲染平滑升级为前后端分离架构。

在完成 Spring Boot 基础 CRUD 开发后,若希望摆脱 Freemarker/Thymeleaf 等服务端模板对 UI 设计的限制,迈向更灵活、可维护性更强的工程实践,前后端分离是标准且推荐的演进路径——即后端专注提供标准化 RESTful API,前端独立开发并部署(如 Vue CLI 本地开发于 http://localhost:5173),通过 HTTP 协议通信。

✅ 核心前提:解决跨域问题(CORS)

由于浏览器同源策略限制,前端运行在 http://localhost:5173 时调用 http://localhost:8080 的接口会触发跨域拦截。Spring Boot 提供两种主流方案:

  • 临时调试(不推荐用于生产):在 Controller 方法上添加 @CrossOrigin(origins = "http://localhost:5173")
  • 推荐方案:全局 CORS 配置(类型安全、可配置化、易维护)
// src/main/java/com/example/config/WebConfig.java
package com.example.config;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@Configuration
public class WebConfig implements WebMvcConfigurer {

    @Value("${cors.allowed-origins:http://localhost:5173}")
    private String[] allowedOrigins;

    @Value("${cors.allowed-methods:GET,POST,PUT,DELETE,PATCH,OPTIONS}")
    private String[] allowedMethods;

    @Value("${cors.allow-credentials:true}")
    private boolean allowCredentials;

    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**")
                .allowedOrigins(allowedOrigins)
                .allowedMethods(allowedMethods)
                .allowCredentials(allowCredentials)
                .maxAge(3600); // 缓存预检请求 1 小时
    }
}

对应 application.yml(更清晰的层级结构):

# application.yml
cors:
  allowed-origins: http://localhost:5173, https://your-prod-fe.com
  allowed-methods: GET,POST,PUT,DELETE,PATCH,OPTIONS
  allow-credentials: true

⚠️ 生产注意:

前端设计引擎
前端设计引擎

使用此技能可创建独具特色、具备生产级质量的前端界面,设计品质高。当用户要求构建网页组件、页面、产物、海报或应用程序时(例如:网站、落地页、仪表盘、React 组件、HTML/CSS 布局,或对任意 Web UI 进行样式优化与视觉美化),请启用该能力。输出需为富有创意、精雕细琢的代码与 UI 设计,避免千篇一律的 AI 风格。

下载
  • allowed-origins *禁止使用 `""配合allow-credentials: true`**(浏览器将拒绝该配置);
  • 建议按环境配置不同域名(如 dev, staging, prod),通过 spring.profiles.active 切换。

✅ 接口设计:遵循 RESTful 规范 + 统一响应体

前端期望结构一致、语义明确的 JSON 响应。避免直接返回原始对象或字符串,推荐封装通用 Result:

// com.example.common.Result.java
@Data
public class Result<t> {
    private Integer code;
    private String message;
    private T data;

    public static <t> Result<t> success(T data) {
        Result<t> r = new Result();
        r.code = 200;
        r.message = "OK";
        r.data = data;
        return r;
    }

    public static <t> Result<t> fail(int code, String message) {
        Result<t> r = new Result();
        r.code = code;
        r.message = message;
        return r;
    }
}</t></t></t></t></t></t></t>

Controller 示例(返回 JSON,非 HTML 页面):

@RestController
@RequestMapping("/api/users")
public class UserController {

    @GetMapping
    public Result<list>> listAll() {
        return Result.success(userService.findAll());
    }

    @PostMapping
    public Result<user> create(@RequestBody @Valid User user) {
        return Result.success(userService.save(user));
    }
}</user></list>

✅ 前端调用示例(Vue + Axios)

// src/api/user.js
import axios from 'axios'

export const userApi = {
  list() {
    return axios.get('/api/users')
  },
  create(data) {
    return axios.post('/api/users', data)
  }
}

// 在组件中使用
import { userApi } from '@/api/user'

userApi.list()
  .then(res => {
    if (res.data.code === 200) {
      this.users = res.data.data
    }
  })
  .catch(err => console.error('请求失败:', err))

✅ 进阶建议:提升协作效率

  • API 文档自动化:集成 Springdoc OpenAPI(替代旧版 Swagger),生成实时 /v3/api-docs 和 UI 页面;
  • 接口契约先行:使用 OpenAPI 3.0 YAML 定义接口,前后端共用契约,减少沟通成本;
  • Mock 与联调分离:前端可用 Mock Service Worker(MSW)模拟 API,后端专注逻辑,互不阻塞;
  • 静态资源部署解耦:前端构建产物(dist/)不再放入 src/main/resources/static,而是由 Nginx 独立托管,真正实现物理分离。

通过以上配置,你的 Spring Boot 后端即可稳定、专业地支撑任意现代前端框架——设计自由度大幅提升,团队分工更清晰,项目可扩展性与长期可维护性显著增强。

前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!

相关专题

更多
python是前端还是后端
python是前端还是后端

Python属于前端也属于后端,其灵活性和丰富的生态系统使得开发人员能够在不同的领域中灵活运用。本专题为大家提供python相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.11

2743

5

前端和后端的区别
前端和后端的区别

前端关注的是用户界面的设计和交互,而后端则注重数据处理和逻辑控制。想了解更多前端后端的相关内容,可以阅读本专题下面的文章。

2024.03.19

6910

13

后端的主要工作内容介绍
后端的主要工作内容介绍

后端是应用程序的服务端部分,负责核心任务,如数据库交互、业务逻辑处理和响应客户端请求。想了解更多后端的相关内容,可以阅读本专题下面的文章。

2024.03.19

6406

10

python是前端还是后端
python是前端还是后端

Python属于前端也属于后端,其灵活性和丰富的生态系统使得开发人员能够在不同的领域中灵活运用。本专题为大家提供python相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.11

2743

5

前端如何实现即时通讯
前端如何实现即时通讯

实现即时通讯的方法有WebSocket、Long Polling、Server-Sent Events、WebRTC等等。详细介绍:1、WebSocket,它可以在客户端和服务器之间建立持久连接,实现实时的双向通信,前端可以使用 WebSocket API来创建WebSocket连接,并通过发送和接收消息来实现即时通讯;2、Long Polling,是一种模拟实时通信的技术等等。

2023.10.09

5963

6

前端和后端的区别
前端和后端的区别

前端关注的是用户界面的设计和交互,而后端则注重数据处理和逻辑控制。想了解更多前端后端的相关内容,可以阅读本专题下面的文章。

2024.03.19

6910

13

php和前端的关联介绍
php和前端的关联介绍

php既可以作为前端语言,也可以作为后端语言。想了解更多php和前端的相关内容,可以阅读本专题下面的文章。

2024.03.22

6678

10

前端外包工作内容有哪些
前端外包工作内容有哪些

前端外包工作内容包括:1. 网站和应用程序开发;2. 用户界面和交互设计;3. 用户体验优化;4. 设计和视觉开发;5. 跨浏览器兼容性;6. 性能优化;7. 维护和更新;8. 项目管理和沟通。想了解更多前端的相关内容,可以阅读本专题下面的文章。

2024.05.22

943

5

spring boot框架优点
spring boot框架优点

spring boot框架的优点有简化配置、快速开发、内嵌服务器、微服务支持、自动化测试和生态系统支持。本专题为大家提供spring boot相关的文章、下载、课程内容,供大家免费下载体验。

2023.09.05

671

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程