☰
SpringBoot+Vue3博客管理系统:从零部署到功能验证的完整实践指南
2026/10/2 10:04:58 网站建设 项目流程

这次我们来看一个能快速上手的博客管理系统项目。对于计算机相关专业的同学来说,毕业设计是一个绕不开的坎,而一个功能完整、技术栈主流、能跑起来的项目往往是简历上的亮点。这个项目基于 SpringBoot 和 Vue3 实现前后端分离,从零开始搭建一个具备增删改查等核心功能的博客系统,源码完整,部署简单,非常适合作为毕设选题或自学练手。

项目最核心的价值在于“可运行”。很多教程只讲概念,代码跑不起来,但这个项目提供了完整的源码和清晰的部署指引,目标是让你在3小时内看到成果。它采用了当前企业级开发中非常流行的技术组合:后端使用 SpringBoot 框架,快速构建 RESTful API;前端使用 Vue3 配合 Element Plus 组件库,构建现代化的管理界面。前后端通过接口完全解耦,这种架构模式也是目前面试中的高频考点。

本文将带你完整走一遍这个博客管理系统的搭建和运行过程。我们会从环境准备开始,一步步完成前后端项目的启动、数据库的初始化、接口的联调,并验证核心的增删改查功能。无论你是正在为毕设发愁的学生,还是想快速掌握 SpringBoot + Vue3 前后端分离开发模式的开发者,这篇文章都能提供一条清晰的实践路径。下面,我们就直接进入正题。

1. 核心能力速览

在动手之前,我们先快速了解这个项目的关键信息,判断它是否适合你的需求。

能力项说明
项目类型前后端分离的博客内容管理系统 (CMS)
技术栈后端:SpringBoot + MyBatis-Plus + MySQL
前端:Vue3 + TypeScript + Vite + Element Plus + Axios
核心功能用户管理、文章分类管理、博客文章管理(增删改查)、标签管理、评论管理(基础)
部署难度低至中等,提供详细步骤,适合初学者
环境要求JDK 8+、Node.js 16+、MySQL 5.7+、Maven、IDE(如 IDEA、VSCode)
启动方式后端通过 IDE 运行或mvn spring-boot:run命令启动;前端通过npm run dev启动
是否支持 API是,后端提供完整的 RESTful API,前端通过 Axios 调用
是否支持批量操作基础功能支持单条操作,可通过扩展实现批量(如批量删除文章)
适合场景毕业设计、课程设计、个人技术博客搭建、前后端分离项目入门学习

从表格可以看出,这是一个典型的教学与实践结合的项目。它没有追求大而全的复杂功能,而是聚焦于博客系统的核心数据流和前后端交互,让你能快速理解 MVC 架构、接口设计、跨域处理等关键概念。

2. 适用场景与使用边界

2.1 这个项目适合谁?

  1. 计算机相关专业的毕业生:急需一个能运行、有源码、技术栈不落伍的毕设项目。
  2. Java 或前端初学者:想通过一个完整的项目来串联 SpringBoot 或 Vue3 的知识点。
  3. 希望转型全栈的开发者:希望了解前后端如何协作,如何设计 API 接口。
  4. 个人博客开发者:需要一个轻量、可二次开发的后台管理系统。

2.2 能解决什么问题?

  • 毕设/课设选题难:提供一个现成的、可深度定制的项目基础。
  • 理论与实践脱节:通过亲手部署和调试,将书本上的 SpringBoot、Vue、MySQL 知识串联起来。
  • 简历项目经验缺乏:完成本项目并理解其代码,可以成为一个不错的实战项目经历。
  • 快速搭建后台原型:如果你有一个博客创意,可以基于此项目快速搭建管理后台,专注于业务逻辑开发。

2.3 不适合什么场景?

  • 高并发生产环境:本项目为教学演示性质,在数据库设计、缓存、安全防护等方面未做深度优化,不建议直接用于高流量生产环境。
  • 复杂业务系统:功能集中于博客管理,对于电商、OA、ERP 等复杂业务系统,需要大量重构和扩展。
  • 无编程基础者:需要具备 Java、JavaScript 和数据库的基本知识,否则在环境配置和问题排查上会遇到较大困难。

2.4 版权与合规提醒

  • 源码使用:本项目源码通常遵循开源协议(如 MIT、GPL),使用时请确认具体协议,遵守相关要求。用于毕设时,应在理解的基础上进行修改和扩展,避免直接抄袭。
  • 数据安全:项目中涉及用户、文章等数据,在实际部署时,务必注意数据库密码等敏感信息的加密存储,避免硬编码在代码中。
  • 内容合规:作为博客系统,发布内容需遵守相关法律法规,系统开发者有责任对内容进行审核和管理。

3. 环境准备与前置条件

“工欲善其事,必先利其器”。在开始编码和运行之前,请确保你的开发环境已就绪。以下是详细的清单:

3.1 软件环境清单

  1. Java 开发环境:

    • JDK:版本 1.8 或以上(推荐 JDK 8, 11, 17)。安装后配置JAVA_HOME环境变量。
    • Maven:版本 3.6 或以上,用于管理项目依赖和构建。配置MAVEN_HOME并添加至PATH。
    • IDE:IntelliJ IDEA(社区版或旗舰版)或 Eclipse。IDEA 对 SpringBoot 支持更好,强烈推荐。
  2. 前端开发环境:

    • Node.js:版本 16.x 或以上(推荐 LTS 版本)。安装包自带 npm。
    • 包管理工具:npm 或 yarn。本文以 npm 为例。
    • IDE:Visual Studio Code 或 WebStorm。VSCode 轻量且插件丰富,是前端开发首选。
  3. 数据库:

    • MySQL:版本 5.7 或以上(推荐 5.7 或 8.0)。确保服务已启动。
    • 数据库管理工具:Navicat、DBeaver 或 MySQL Workbench,用于执行 SQL 脚本和查看数据。
  4. 版本控制(可选但推荐):

    • Git:用于克隆项目源码和管理代码版本。

3.2 环境验证命令

打开终端(Windows 用 CMD 或 PowerShell,Mac/Linux 用 Terminal),依次执行以下命令验证环境:

# 验证 Java java -version # 输出应类似:java version "1.8.0_301" # 验证 Maven mvn -v # 输出应包含 Apache Maven 版本信息 # 验证 Node.js node -v # 输出应类似:v16.14.0 npm -v # 输出应类似:8.3.1 # 验证 MySQL (需要先登录) mysql --version # 输出应类似:mysql Ver 8.0.28 for Win64 on x86_64

3.3 项目源码获取

通常项目源码会托管在 GitHub、Gitee 或通过网盘分享。假设你已获得源码压缩包或 Git 仓库地址。

# 如果是 Git 仓库,使用 clone 命令 git clone [项目仓库地址] cd [项目文件夹名] # 如果是压缩包,直接解压即可

解压后,项目结构通常如下:

blog-project/ ├── blog-backend/ # SpringBoot 后端项目 │ ├── src/ │ ├── pom.xml │ └── ... ├── blog-frontend/ # Vue3 前端项目 │ ├── src/ │ ├── package.json │ └── ... └── database/ # 数据库SQL脚本 └── blog_db.sql

请确认你拥有类似的结构。如果只有单个项目,可能需要根据说明单独配置前后端。

4. 安装部署与启动方式

环境准备好后,我们开始分步部署前后端。原则是:先启动后端服务,再启动前端应用。

4.1 后端 SpringBoot 项目部署

步骤 1:导入项目

  1. 打开 IntelliJ IDEA。
  2. 选择File->Open,找到并选中blog-backend文件夹,点击OK。
  3. IDEA 会自动识别为 Maven 项目并开始下载依赖(观察右下角进度条)。首次导入可能需要几分钟,取决于网络速度。

步骤 2:配置数据库

  1. 使用你的数据库工具(如 Navicat)连接本地 MySQL。
  2. 创建一个新的数据库,命名为blog_db(或根据项目要求命名,字符集建议utf8mb4)。
  3. 找到项目中的database/blog_db.sql文件,在数据库工具中打开并执行该 SQL 脚本。这将创建所需的表结构和初始数据(如果提供)。

步骤 3:修改配置文件后端项目的配置文件通常位于src/main/resources/application.yml或application.properties。你需要修改数据库连接信息。

# application.yml 示例配置 spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/blog_db?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai username: root # 你的数据库用户名 password: 123456 # 你的数据库密码 # 可选:配置JPA或MyBatis-Plus(如果项目使用) mybatis-plus: configuration: log-impl: org.apache.ibatis.logging.stdout.StdOutImpl # 开启SQL日志,调试用

步骤 4:启动后端服务有几种启动方式:

  • 方式一(推荐):在 IDEA 中找到主启动类(通常名为XxxApplication,包含@SpringBootApplication注解),右键点击,选择Run ‘XxxApplication’。
  • 方式二:在项目根目录(blog-backend)下打开终端,执行命令:
    mvn spring-boot:run
  • 方式三:先打包再运行。
    mvn clean package java -jar target/blog-backend-0.0.1-SNAPSHOT.jar

步骤 5:验证后端启动启动成功后,控制台会输出 SpringBoot 的 Banner 和启动日志,最后看到类似Started XxxApplication in 5.123 seconds (JVM running for 5.789)的信息。 此时,你可以打开浏览器,访问http://localhost:8080(端口号以实际配置为准)。如果后端仅提供 API 无页面,可以访问http://localhost:8080/swagger-ui.html(如果集成了 Swagger)或http://localhost:8080/api/hello(如果存在测试接口)来验证服务是否正常。

4.2 前端 Vue3 项目部署

步骤 1:安装依赖

  1. 打开终端,进入前端项目目录blog-frontend。
  2. 执行以下命令安装项目依赖(使用 npm 镜像可加速):
    cd blog-frontend npm install # 或使用淘宝镜像 # npm install --registry=https://registry.npmmirror.com
    这个过程会下载node_modules,同样需要一些时间。

步骤 2:配置接口代理(关键步骤)前端需要知道后端 API 的地址。在开发环境下,通常通过vue.config.js或vite.config.ts配置代理,解决跨域问题。 找到blog-frontend/vite.config.ts(或vue.config.js)文件,进行如下配置:

// vite.config.ts 示例 import { defineConfig } from 'vite' import vue from '@vitejs/plugin-vue' export default defineConfig({ plugins: [vue()], server: { port: 3000, // 前端开发服务器端口 proxy: { '/api': { // 代理所有以 /api 开头的请求 target: 'http://localhost:8080', // 后端服务地址 changeOrigin: true, // rewrite: (path) => path.replace(/^\/api/, '') // 根据后端接口实际路径决定是否需要重写 } } } })

如果项目使用 Vue CLI,则修改vue.config.js中的devServer.proxy配置。

步骤 3:启动前端开发服务器在blog-frontend目录下,执行:

npm run dev # 或 npm run serve

启动成功后,终端会输出本地访问地址,通常是http://localhost:3000或http://localhost:8081。

步骤 4:验证前端启动打开浏览器,访问终端输出的地址(如http://localhost:3000)。你应该能看到博客管理系统的登录页或首页。

至此,前后端服务均已启动。接下来,我们进入系统进行功能测试。

5. 功能测试与效果验证

系统跑起来是第一步,验证核心功能是否正常才是关键。我们按照一个典型的管理员操作流程进行测试。

5.1 用户登录与权限验证

  1. 测试目的:验证系统基础认证功能是否正常,能否进入管理后台。
  2. 操作步骤:
    • 访问前端地址(如http://localhost:3000)。
    • 在登录页面,输入默认的管理员账号和密码(常见组合如admin/admin123,具体请查看项目文档或数据库user表)。
    • 点击登录。
  3. 预期结果:
    • 登录成功,跳转到系统后台管理首页(Dashboard)。
    • 浏览器开发者工具(F12)的Network标签页中,能看到一个向/api/login或类似地址发送的 POST 请求,状态码为 200,并返回了 token 等信息。
  4. 判断成功:能成功进入后台主界面,并且页面右上角显示当前登录的用户名。
  5. 常见失败原因:
    • 后端服务未启动:检查localhost:8080是否可访问。
    • 数据库连接失败:检查后端日志中的数据库连接错误。
    • 账号密码错误:核对数据库user表中的记录。
    • 跨域问题:确认前端代理配置vite.config.ts是否正确,且代理的目标端口与后端一致。

5.2 博客文章管理(增删改查)

这是系统的核心功能,我们逐一测试。

5.2.1 查询文章列表
  1. 测试目的:验证文章数据能否从数据库正确加载并显示在前端。
  2. 操作步骤:登录后,点击侧边栏或导航菜单中的“文章管理”或“博客管理”。
  3. 预期结果:页面以表格形式展示已有的文章列表,包含标题、分类、作者、发布时间、状态等字段。
  4. 后台验证:同时打开浏览器开发者工具的Network标签,刷新页面或进入该页时,应能看到一个GET请求到类似/api/articles的接口,并成功返回 JSON 格式的文章列表数据。
5.2.2 新增文章
  1. 测试目的:验证创建新文章的功能,包括表单提交、数据入库和前端响应。
  2. 操作步骤:
    • 在文章列表页,点击“新增”或“写文章”按钮。
    • 在弹出框或新页面中,填写文章标题、选择分类、填写内容(富文本编辑器)、设置标签等。
    • 点击“保存”或“发布”。
  3. 预期结果:
    • 前端提示“操作成功”或类似信息。
    • 文章列表页立即刷新或通过前端路由跳转,新文章出现在列表中。
    • Network中看到一个POST请求到/api/articles,请求体包含你填写的表单数据,响应状态码为 200 或 201。
  4. 数据库验证:打开数据库工具,查询article或blog表,确认新增的记录已存在。
5.2.3 编辑文章
  1. 测试目的:验证修改现有文章的功能。
  2. 操作步骤:
    • 在文章列表的操作列,点击某篇文章的“编辑”按钮。
    • 修改文章标题或内容。
    • 点击“保存”。
  3. 预期结果:
    • 前端提示修改成功。
    • 列表页中该文章的标题等信息已更新。
    • Network中看到一个PUT或POST请求到/api/articles/{id},并携带修改后的数据。
5.2.4 删除文章
  1. 测试目的:验证删除功能及其交互(如确认对话框)。
  2. 操作步骤:
    • 在文章列表的操作列,点击某篇文章的“删除”按钮。
    • 在弹出的确认对话框中,点击“确定”。
  3. 预期结果:
    • 前端提示删除成功。
    • 该文章从列表页中消失。
    • Network中看到一个DELETE请求到/api/articles/{id}。
    • 数据库对应记录被标记为删除(逻辑删除)或物理删除。

5.3 文章分类与标签管理

  1. 测试目的:验证系统的基础数据管理模块。
  2. 操作步骤:分别测试“分类管理”和“标签管理”模块的增删改查功能,流程与文章管理类似。
  3. 预期结果:能够创建、编辑、删除分类和标签,并且在新增/编辑文章时,能够正确地从下拉框或选择器中选取已创建的分类和标签。
  4. 关联性验证:创建一个新分类“测试分类”,然后新建一篇文章并选择该分类。保存后,查看文章列表和详情,确认分类信息正确关联并显示。

5.4 用户管理(如果具备)

  1. 测试目的:验证后台用户管理功能(通常仅管理员可用)。
  2. 操作步骤:进入“用户管理”页面,尝试添加一个新用户、修改用户信息、禁用/启用用户。
  3. 预期结果:用户列表正常显示,增删改查操作均能成功,并且新用户可以使用分配的账号密码登录系统(注意权限)。

通过以上测试,我们验证了博客管理系统最核心的 CURD(增删改查)操作。如果所有功能均运行正常,说明项目部署成功,前后端联调无误。

6. 接口 API 与批量任务

理解系统的 API 设计是深入学习和二次开发的基础。同时,虽然基础功能可能不包含批量操作,但了解如何扩展很有必要。

6.1 接口 API 设计分析

一个典型的 RESTful 风格博客系统 API 设计如下(具体路径以项目源码为准):

模块请求方法接口路径功能说明
认证POST/api/auth/login用户登录
用户GET/api/users获取用户列表
POST/api/users创建用户
PUT/api/users/{id}更新用户
DELETE/api/users/{id}删除用户
文章GET/api/articles获取文章列表(可分页)
GET/api/articles/{id}获取文章详情
POST/api/articles创建文章
PUT/api/articles/{id}更新文章
DELETE/api/articles/{id}删除文章
分类GET/api/categories获取分类列表
标签GET/api/tags获取标签列表

你可以使用Postman或Apifox等工具直接测试这些接口,独立于前端页面。

6.2 使用 Postman 测试接口

以“获取文章列表”为例:

  1. 打开 Postman,新建一个GET请求。
  2. 地址栏输入:http://localhost:8080/api/articles。
  3. 点击Send。
  4. 查看返回的 JSON 数据,应与前端页面显示的数据一致。
  5. 测试需要认证的接口(如创建文章):先在Headers中添加Authorization: Bearer your_jwt_token(token 从登录接口获取)。

6.3 批量任务扩展思路

原生系统可能不支持批量删除文章。这里提供一个扩展思路,展示如何在后端添加一个批量删除接口:

后端实现(SpringBoot Controller):

// ArticleController.java @RestController @RequestMapping("/api/articles") public class ArticleController { @Autowired private ArticleService articleService; // 批量删除接口 @DeleteMapping("/batch") public Result batchDelete(@RequestBody List<Long> ids) { // 接收ID列表 boolean success = articleService.removeByIds(ids); if (success) { return Result.ok("批量删除成功"); } else { return Result.fail("批量删除失败"); } } }

前端调用(Vue3 + TypeScript + Axios):

// 在文章管理页面中 import { ref } from 'vue'; import { ElMessage, ElMessageBox } from 'element-plus'; import { batchDeleteArticle } from '@/api/article'; // 假设封装了API // 选中文章的ID数组 const selectedIds = ref<number[]>([]); const handleBatchDelete = async () => { if (selectedIds.value.length === 0) { ElMessage.warning('请选择要删除的文章'); return; } try { await ElMessageBox.confirm('确定批量删除选中的文章吗?', '提示', { type: 'warning' }); await batchDeleteArticle(selectedIds.value); ElMessage.success('批量删除成功'); // 刷新列表 fetchArticleList(); // 清空选中 selectedIds.value = []; } catch (error) { // 用户取消或操作失败 console.error(error); } }; // API 封装文件 (src/api/article.ts) import request from '@/utils/request'; // 基于axios封装的请求工具 export function batchDeleteArticle(ids: number[]) { return request({ url: '/api/articles/batch', method: 'delete', data: ids // 将数组作为请求体发送 }); }

通过这个例子,你可以学习如何根据需求扩展系统的 API 和前端功能。

7. 资源占用与性能观察

对于本地开发和学习项目,性能并非首要关注点,但了解基本的资源占用和性能观察方法,有助于你写出更好的代码,并为未来优化做准备。

7.1 后端服务资源占用

  • 内存:一个基础的 SpringBoot 博客应用,启动后 JVM 堆内存占用通常在 200MB - 500MB 之间,取决于堆内存设置 (-Xmx) 和加载的依赖。
  • CPU:在空闲状态下 CPU 占用很低。当处理请求(如复杂查询、文件上传)时,会有瞬时峰值。
  • 观察方法:
    • IDEA 内置工具:运行应用时,IDEA 底部有Services或Run窗口,可以看到进程的 CPU 和内存使用情况。
    • 系统任务管理器:在 Windows 任务管理器或 Mac 活动监视器中查看java进程的资源占用。
    • JConsole/VisualVM:JDK 自带的监控工具,可以连接到运行中的 Java 进程,查看堆内存、线程、GC 等详细信息。

7.2 前端开发服务器资源占用

  • 内存:npm run dev启动的 Vite 开发服务器,内存占用通常在 100MB - 300MB。
  • CPU:主要在代码热重载(HMR)时会有波动。
  • 观察方法:通过系统任务管理器查看node进程。

7.3 数据库连接与查询性能

  • 连接数:SpringBoot 默认使用 HikariCP 连接池,初始连接数较小。可以在application.yml中配置。
    spring: datasource: hikari: maximum-pool-size: 10 # 最大连接数 minimum-idle: 5 # 最小空闲连接数
  • 慢查询:对于复杂的列表查询(如文章列表关联分类、标签),如果数据量大可能变慢。开启 MyBatis-Plus 的 SQL 日志(如前面配置所示),可以观察执行的 SQL 语句和时间。
  • 优化建议:为经常用于查询条件的字段(如article表的category_id,status,create_time)建立数据库索引。

7.4 接口响应时间观察

这是评估性能最直观的方式。

  1. 打开浏览器开发者工具 (F12)。
  2. 切换到Network标签页。
  3. 在前端页面进行操作(如点击查询、保存)。
  4. 查看对应的 API 请求,Time列显示了从发起到接收完响应的时间。
  • 通常期望:本地环境下,简单查询接口应在 100ms 内返回,写操作(增删改)在 200ms 内。如果发现某个接口特别慢(>1s),就需要结合后端日志和 SQL 日志进行分析。

对于教学项目,只要接口响应在可接受范围内(1-2秒内),且不出现内存持续增长(内存泄漏)或 CPU 持续 100% 的情况,即可认为性能达标。重点在于理解整个数据流,而非过早进行深度优化。

8. 常见问题与排查方法

在部署和运行过程中,你几乎一定会遇到一些问题。下面列出常见问题及其解决方法,帮你快速排雷。

问题现象可能原因排查方式解决方案
后端启动失败,端口被占用8080 端口已被其他程序(如另一个SpringBoot应用、Tomcat)使用。1. 查看启动日志中的错误信息。
2. 命令行执行netstat -ano | findstr :8080(Win) 或lsof -i :8080(Mac/Linux) 查看占用进程。
1. 终止占用端口的进程。
2. 修改application.yml中的server.port为其他端口,如8090。
前端代理配置后,仍报跨域错误1. 代理配置错误或未生效。
2. 后端未配置跨域支持。
1. 检查vite.config.ts中target的端口是否与后端一致。
2. 查看浏览器Network,请求是否发向了正确的代理地址。
1. 确保代理配置正确并重启前端服务 (npm run dev)。
2. 在后端添加全局跨域配置(CORS)。
数据库连接失败1. 数据库服务未启动。
2. 配置文件中用户名、密码、数据库名错误。
3. 数据库驱动版本不匹配。
查看后端启动日志,通常会有明确的连接失败异常信息,如Access denied或Unknown database。1. 启动 MySQL 服务。
2. 仔细核对application.yml中的数据库连接信息。
3. 检查pom.xml中的mysql-connector-java版本是否与 MySQL 版本兼容。
前端npm install失败1. 网络问题,无法连接 npm 仓库。
2. Node.js 版本过低。
3. 项目依赖存在冲突。
查看命令行报错信息,常见的有ETIMEDOUT,ERR_SOCKET_TIMEOUT(网络),或not compatible(版本)。1. 使用淘宝镜像:npm config set registry https://registry.npmmirror.com,然后重试。
2. 升级 Node.js 到 LTS 版本。
3. 删除node_modules和package-lock.json,重新npm install。
页面能打开,但列表数据为空1. 后端 API 地址不对,前端请求未到达后端。
2. 数据库中没有数据。
3. 后端接口逻辑有误。
1. 浏览器F12->Network,查看列表请求是否成功(状态码200),响应体是什么。
2. 直接访问后端接口地址(如http://localhost:8080/api/articles)测试。
1. 修正前端请求的 baseURL 或代理配置。
2. 检查数据库对应表是否有数据,或执行初始化 SQL。
3. 查看后端控制台日志,是否有异常抛出。
登录失败,提示“用户名或密码错误”1. 输入的账号密码错误。
2. 数据库用户表密码是加密的,但登录逻辑比较的是明文。
1. 直接查询数据库user表,核对用户名和密码字段。
2. 查看后端登录接口的密码校验逻辑(通常是比对加密后的字符串)。
1. 使用数据库中正确的密码登录。
2. 如果是加密密码,尝试使用项目提供的默认密码,或使用 BCrypt 等工具生成加密密码更新到数据库。
新增或编辑文章后,内容不显示或乱码1. 数据库表字符集不是utf8mb4,导致不兼容 Emoji 或某些特殊字符。
2. 前端富文本编辑器与后端保存/读取格式不匹配。
1. 检查数据库、表和字段的字符集。
2. 查看后端接收到的请求参数和存入数据库的内容是否一致。
1. 将数据库、表、字段的字符集修改为utf8mb4。
2. 确保前端传递和后端接收的数据格式(如 HTML 字符串)一致。
打包部署后,前端访问后端 API 404生产环境没有配置代理,前端打包后的静态文件访问后端需要解决跨域和路径问题。区分开发和生产环境。开发环境用代理,生产环境需要将前端静态文件部署到 Nginx 等服务器,并配置反向代理,或者将后端打包成 Jar,前端资源作为静态资源嵌入。方案一(推荐):前后端分离部署。使用 Nginx 部署前端,并配置location /api反向代理到后端服务。
方案二:将前端打包产物 (dist文件夹) 复制到后端src/main/resources/static目录下,然后打包成一个 Jar。

遇到问题时,查看日志是最有效的排查手段。后端日志在 IDEA 控制台,前端错误在浏览器控制台 (F12->Console)。根据错误信息搜索,大部分问题都能找到解决方案。

9. 最佳实践与使用建议

成功运行项目只是开始。要让这个项目真正为你所用,成为简历上的加分项,还需要做一些工作和思考。

9.1 代码理解与二次开发

  1. 不要只停留在运行:花时间阅读源码。从后端的Controller->Service->Mapper->Entity,到前端的router、store、views/components、api,理解整个数据流向和模块划分。
  2. 尝试修改:改一下页面样式、增加一个文章“浏览量”字段、添加一个简单的数据统计图表。通过动手修改来巩固知识。
  3. 模仿结构,创建新模块:尝试仿照“文章管理”,新增一个“友情链接”或“公告管理”模块。这是检验你是否理解项目架构的最好方式。

9.2 项目工程化建议

  1. 配置分离:将application.yml中的敏感信息(数据库密码)提取到application-prod.yml,并通过环境变量或启动参数注入,避免密码泄露。
  2. 使用 Git:如果你是在源码基础上修改,务必初始化 Git 仓库,频繁提交,写好 commit 信息。这不仅是好习惯,也能在改错时轻松回退。
  3. 目录规范:保持项目结构清晰。前端组件、工具函数、样式文件分门别类存放;后端的controller,service,mapper,entity,dto,vo等包结构明确。

9.3 为毕设增色

  1. 完善功能:基础 CRUD 是及格线。考虑添加:
    • 文章搜索:支持按标题、内容、分类模糊查询。
    • 文章评论:实现完整的评论、回复功能。
    • 用户角色权限:区分管理员和普通用户,实现基于角色的访问控制 (RBAC)。
    • 文件上传:支持文章封面图片上传。
    • 数据可视化:在 Dashboard 添加图表,显示文章数、用户数趋势。
  2. 撰写文档:为你的项目编写清晰的README.md,包括项目介绍、技术栈、部署步骤、功能截图。这是专业性的体现。
  3. 准备演示:提前录制一个 3-5 分钟的系统功能演示视频,在答辩时直接播放,清晰直观。

9.4 部署上线(可选但推荐)

尝试将项目部署到云服务器,体验完整的 DevOps 流程。

  1. 购买云服务器:选择阿里云、腾讯云等厂商的入门级服务器。
  2. 环境搭建:在服务器上安装 JDK、MySQL、Nginx。
  3. 后端部署:将 SpringBoot 项目打包成jar,使用nohup java -jar app.jar &在后台运行,或使用 Docker 容器化部署。
  4. 前端部署:执行npm run build生成dist静态文件,使用 Nginx 配置静态资源服务和反向代理。
  5. 域名与访问:绑定域名,通过域名访问你的博客管理系统。

这个过程会让你对网络、服务器、运维有更深刻的理解。

这个 SpringBoot + Vue3 博客管理系统项目,最大的价值在于提供了一个立即可运行、结构清晰、技术栈主流的全栈实践样板。它完美契合了毕业设计“求稳、求快、求完整”的核心需求。通过本文从环境准备、部署启动、功能验证到问题排查的完整流程,你应该已经能够将它成功运行起来。

最值得你花时间深入的不是如何点击按钮,而是理解其背后的代码逻辑:SpringBoot 如何通过注解优雅地提供 API?MyBatis-Plus 如何简化数据库操作?Vue3 的 Composition API 如何组织前端逻辑?Axios 如何与后端交互?前后端分离架构下,权限、状态、路由如何管理?

最容易踩的坑无非是环境配置(JDK、Node、MySQL版本)、端口冲突、跨域问题和数据库连接。只要按照本文的步骤和排查清单,这些问题都能解决。

接下来,你可以以此为起点,进行深度定制:更换 UI 主题、增加第三方登录、集成 Elasticsearch 实现全文检索、添加 Redis 缓存提升性能、甚至拆分为微服务架构。每一步探索,都会让你离一个合格的后端或全栈工程师更近一步。建议收藏本文,在部署和开发过程中随时参考。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询