news 2026/9/2 6:21:38

SpringBoot+Vue3博客系统实战:从环境搭建到部署的完整指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
SpringBoot+Vue3博客系统实战:从环境搭建到部署的完整指南

这次我们来看一个基于 SpringBoot 和 Vue3 的博客管理系统。对于正在寻找毕业设计项目、希望快速搭建一个完整可运行系统的同学来说,这个项目非常值得关注。它不是一个简单的 Demo,而是一个功能完备、前后端分离、可以直接部署运行的实战项目。核心价值在于,它提供了一个从零开始的完整实现路径,涵盖了后端 API、前端界面、数据库设计等关键环节,并且附带了完整的源码。

本文将带你快速了解这个项目的核心能力、技术栈构成,并手把手完成从环境准备、项目启动到核心功能测试的全过程。无论你是想学习 SpringBoot 和 Vue3 的整合,还是急需一个高质量的毕设项目来丰富简历,这篇文章都能提供直接的帮助。我们会重点关注项目的启动门槛、代码结构、功能模块以及如何将其运行起来进行验证。

1. 核心能力速览

在深入代码之前,我们先通过一个表格快速了解这个博客管理系统的核心规格和特点,这有助于你判断它是否满足你的需求。

能力项说明
项目类型前后端分离的博客内容管理系统 (CMS)
技术栈后端:SpringBoot, MyBatis-Plus, MySQL
前端:Vue3, Element Plus, Axios, Vue Router
主要功能用户登录/注册、博客文章增删改查、文章分类/标签管理、评论管理、后台数据统计等
部署方式后端打包为可执行 Jar 包,前端构建为静态资源,支持一键启动或分步部署
硬件门槛极低。本地开发仅需 JDK、Node.js、MySQL,无需高性能 GPU 或大量显存。生产环境对服务器配置要求不高。
适合场景1.毕业设计/课程设计:提供完整源码和实现思路。
2.个人技术学习:学习 SpringBoot + Vue3 前后端分离架构实战。
3.快速原型搭建:作为基础框架,快速扩展成其他内容管理系统。
源码完整性提供完整的前后端源码、SQL 初始化脚本,通常包含详细的 README 文档。
学习价值涵盖 RESTful API 设计、JWT 鉴权、前端路由、组件封装、数据库操作等企业级开发常见技术点。

2. 适用场景与使用边界

这个项目主要面向以下几类开发者:

  1. 高校学生(计算机相关专业):正在寻找一个结构清晰、技术栈主流、功能完整的毕业设计或课程设计项目。本项目可以直接运行,并在此基础上进行功能扩展或界面美化,能极大节省从零搭建框架的时间。
  2. Java/前端初学者:希望找到一个真实的项目来练习 SpringBoot 和 Vue3 的整合开发,理解前后端如何通过 API 交互,掌握 CRUD 操作的完整流程。
  3. 需要快速搭建内部内容管理平台的开发者:项目本身是一个博客系统,但其用户、文章、分类、评论等模块是许多后台管理系统的通用功能,可以快速修改为新闻发布、产品管理、知识库等系统。

使用边界与注意事项:

  • 非企业级高并发方案:作为教学和入门项目,其架构和代码设计主要侧重于清晰易懂,并未针对高并发、大数据量等场景做深度优化。如需用于生产环境,需要在性能、安全(如 SQL 注入防护、XSS 过滤)、日志监控等方面进行加固。
  • 版权与原创性:如果你直接使用此项目作为毕设,务必理解其每一行代码,并能向导师阐述清楚核心逻辑。建议在理解的基础上进行个性化改造(如更换主题、增加新功能模块),以避免学术不端风险。
  • 功能范围:核心是博客内容管理。像第三方登录、全文检索、支付、复杂的权限体系(RBAC)等高级功能,可能需要自行扩展或集成其他组件。

3. 环境准备与前置条件

在开始部署之前,请确保你的开发环境满足以下基本要求。这是项目能够成功运行的基础。

3.1 后端开发环境

  • JDK:版本 8 或 11(推荐 11)。SpringBoot 2.x 对 JDK 8 兼容性好,SpringBoot 3.x 则需要 JDK 17+。请根据项目源码中pom.xml指定的 SpringBoot 版本选择。
  • Maven:版本 3.6+。用于管理 Java 项目依赖和打包。
  • IDE:IntelliJ IDEA(推荐)或 Eclipse。IDEA 对 SpringBoot 和 Maven 的支持更友好。
  • 数据库:MySQL 5.7 或 8.0。你需要提前安装并启动 MySQL 服务。

3.2 前端开发环境

  • Node.js:版本 16+(推荐 18 LTS)。这是运行 Vue 项目和打包工具的基础。
  • 包管理工具:npm 或 yarn。通常安装 Node.js 后会自带 npm。
  • IDE/编辑器:Visual Studio Code(推荐)或 WebStorm。VSCode 配合 Vue 插件开发体验很好。

3.3 通用工具

  • Git:用于克隆项目源码。
  • 浏览器:Chrome 或 Edge,用于访问前端页面和后端 Swagger 接口文档。
  • API 测试工具:Postman 或 Apifox,用于手动测试后端接口。

环境检查清单:在终端或命令提示符中执行以下命令,确认环境已就绪:

# 检查 Java 和 Maven java -version mvn -v # 检查 Node.js 和 npm node -v npm -v # 检查 MySQL 服务状态 (Linux/Mac) # sudo systemctl status mysql # 或登录 MySQL (Windows 可在服务中查看) mysql -u root -p

4. 获取源码与数据库初始化

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

4.1 获取项目源码

# 方式一:如果提供了 Git 仓库地址 git clone <项目仓库地址> cd <项目文件夹名> # 方式二:如果提供了压缩包 # 直接解压到你的工作目录即可

4.2 项目结构概览解压或克隆后,你可能会看到类似如下的目录结构:

blog-management-system/ ├── backend/ # SpringBoot 后端项目 │ ├── src/ │ ├── pom.xml │ └── README.md ├── frontend/ # Vue3 前端项目 │ ├── src/ │ ├── package.json │ └── README.md ├── database/ # 数据库脚本 │ └── blog_db.sql └── README.md # 项目总说明

4.3 初始化数据库

  1. 使用 MySQL 客户端(如命令行、Navicat、DBeaver)连接你的 MySQL 服务。
  2. 创建一个新的数据库,例如命名为blog_db,字符集建议使用utf8mb4
    CREATE DATABASE `blog_db` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
  3. 执行database/blog_db.sql文件中的 SQL 脚本。这个脚本会创建所有必要的表(如user,article,category,comment等)并可能插入一些初始测试数据。
    # 命令行方式示例 mysql -u root -p blog_db < /path/to/database/blog_db.sql

5. 后端 SpringBoot 项目配置与启动

后端是整个系统的核心,负责业务逻辑、数据持久化和提供 REST API。

5.1 导入与依赖下载

  1. 使用 IntelliJ IDEA 打开backend文件夹。
  2. IDEA 会自动识别为 Maven 项目并开始下载pom.xml中声明的依赖(SpringBoot, MyBatis-Plus, MySQL Driver, JWT 等)。请确保网络通畅,首次下载可能需要几分钟。

5.2 修改配置文件关键的配置位于src/main/resources/application.ymlapplication.properties。你需要修改数据库连接信息,使其指向你刚创建的数据库。

# application.yml 示例 spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/blog_db?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai username: root # 改为你的数据库用户名 password: your_password # 改为你的数据库密码 # 可选:配置文件上传大小限制 servlet: multipart: max-file-size: 10MB max-request-size: 100MB # MyBatis-Plus 配置 mybatis-plus: configuration: log-impl: org.apache.ibatis.logging.stdout.StdOutImpl # 开发时开启 SQL 日志,生产环境关闭 global-config: db-config: logic-delete-field: deleted # 全局逻辑删除字段名 logic-delete-value: 1 logic-not-delete-value: 0 # JWT 密钥配置(需保持安全,生产环境应从环境变量读取) jwt: secret: your_jwt_secret_key_here # 改为一个复杂的随机字符串 expire: 604800 # token 过期时间(秒),例如7天

5.3 启动后端服务配置完成后,找到主启动类(通常命名为XxxApplication,例如BlogApplication),直接运行其main方法。

  • 在 IDEA 中,你可以右键点击该类,选择Run ‘BlogApplication‘
  • 启动成功后,控制台会打印出 SpringBoot 的 Banner 和端口信息,例如Tomcat started on port(s): 8080

5.4 验证后端 API

  1. 打开浏览器,访问http://localhost:8080/swagger-ui.htmlhttp://localhost:8080/doc.html(如果集成了 Knife4j 等增强文档)。你应该能看到自动生成的 API 文档页面,这里列出了所有可用的接口。
  2. 使用 Postman 测试一个简单的接口,例如GET http://localhost:8080/api/article/list,应该能收到 JSON 格式的响应(可能是空数组或测试数据)。

6. 前端 Vue3 项目配置与启动

前端项目负责用户交互界面,通过调用后端 API 来展示和操作数据。

6.1 安装依赖打开终端,进入frontend目录,运行以下命令安装项目所需的 npm 包:

cd frontend npm install # 或使用 yarn yarn install

这个过程会下载 Vue3、Element Plus、Axios、Vue Router 等依赖。如果网络较慢,可以考虑配置淘宝镜像。

6.2 配置 API 基地址前端需要知道后端服务的地址。配置文件通常位于src/config/index.js.env.development中。

// src/config/index.js 示例 export default { baseURL: process.env.VUE_APP_BASE_API || 'http://localhost:8080/api', // 确保这里指向你的后端地址和 API 前缀 timeout: 10000 }

或者,在项目根目录创建.env.development文件:

# .env.development VUE_APP_BASE_API = http://localhost:8080/api

6.3 启动前端开发服务器frontend目录下运行:

npm run serve # 或 yarn serve

成功启动后,终端会输出类似的信息:

App running at: - Local: http://localhost:8081 - Network: http://192.168.x.x:8081

6.4 访问前端页面打开浏览器,访问http://localhost:8081(端口可能不同,以终端输出为准)。你应该能看到博客系统的前端登录或首页界面。

7. 功能测试与效果验证

现在前后端都已运行,我们可以开始测试核心功能,验证系统是否正常工作。

7.1 用户登录测试

  1. 访问前端首页,找到登录入口。
  2. 使用数据库脚本中初始化的测试账号(常见如admin/admin123)进行登录。
  3. 预期结果:登录成功,跳转到后台管理首页或博客主页。
  4. 排查点:如果登录失败,检查:
    • 后端控制台是否有报错日志。
    • 前端网络请求(F12打开开发者工具 -> Network)查看登录接口的请求和响应。确认请求 URL、参数是否正确,后端是否返回了有效的 token。

7.2 博客文章增删改查 (CRUD) 测试这是最核心的功能模块。

  • 创建文章:在后台管理界面,点击“写文章”或类似按钮,填写标题、选择分类/标签、编辑内容(富文本编辑器应能正常工作),点击发布。
    • 验证:文章成功发布后,应能在文章列表页或前台博客首页看到新文章。
    • 观察后端:查看控制台打印的 SQL 日志,确认INSERT语句执行成功。
  • 查询文章列表:刷新文章列表页或前台首页。
    • 验证:列表应能正确显示,包括刚创建的文章。支持分页、按分类/标签筛选。
  • 编辑文章:在文章列表找到目标文章,点击编辑,修改内容后保存。
    • 验证:修改后的内容应能立即在前台页面看到。后端应有UPDATESQL 日志。
  • 删除文章:点击删除按钮(可能要求二次确认)。
    • 验证:文章从列表中消失。根据项目设计,可能是物理删除或逻辑删除(deleted字段置为 1)。检查数据库对应记录的状态。

7.3 分类与标签管理测试

  1. 在后台管理界面,找到“分类管理”和“标签管理”。
  2. 尝试添加、编辑、删除一个分类或标签。
  3. 验证:操作后,在发布或编辑文章时,下拉选择框中应能出现新添加的分类或标签。

7.4 评论功能测试

  1. 在前台博客文章详情页,找到评论框。
  2. 以游客或登录用户身份发表一条评论。
  3. 验证:评论成功显示在文章下方。在后台管理界面的“评论管理”中,应能看到这条评论,并可以执行审核、回复、删除等操作。

7.5 前后端联调验证打开浏览器开发者工具(F12),切换到Network标签页,然后在前端页面进行各种操作。

  • 观察请求:每个操作都应触发对应的 API 调用(如/api/article/save,/api/category/list)。
  • 观察响应:API 应返回结构化的 JSON 数据,前端根据此数据更新页面。
  • 关键点:确保请求头中携带了正确的Authorization: Bearer <token>(对于需要登录的接口),这是 JWT 鉴权生效的标志。

8. 项目打包与部署

本地开发测试通过后,可以将其打包,为部署到服务器或提交毕设做准备。

8.1 后端打包 (SpringBoot Jar)backend目录下,使用 Maven 命令打包:

mvn clean package -DskipTests

打包成功后,会在target目录下生成一个xxx-0.0.1-SNAPSHOT.jar文件。这个 Jar 包包含了应用本身和所有依赖,可以直接通过 Java 命令运行:

java -jar target/xxx-0.0.1-SNAPSHOT.jar

生产环境建议:使用nohup或配置为系统服务(systemd)在后台运行,并妥善管理日志文件。

8.2 前端打包 (静态资源)frontend目录下,运行构建命令:

npm run build # 或 yarn build

构建完成后,会生成一个dist目录,里面是优化过的静态文件(HTML, CSS, JS)。

8.3 部署方式

  • 方式一:前后端分离部署(推荐)
    • 后端 Jar 包运行在服务器上(如端口 8080)。
    • 前端dist目录下的文件,部署到 Nginx 或 Apache 等 Web 服务器上。
    • 配置 Nginx,将 API 请求代理到后端服务,并处理前端路由(History 模式)。
    # Nginx 配置示例片段 server { listen 80; server_name your_domain.com; # 或服务器IP # 前端静态资源 location / { root /path/to/frontend/dist; index index.html; try_files $uri $uri/ /index.html; # 支持 Vue Router 的 History 模式 } # 后端 API 代理 location /api/ { proxy_pass http://localhost:8080/api/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } }
  • 方式二:前后端整合部署(简易)
    • 将前端dist目录下的所有文件,复制到 SpringBoot 项目的src/main/resources/static目录下(打包前)。
    • 重新打包后端。这样 Jar 包就同时包含了前端和后端,访问http://localhost:8080即可。这种方式适合简单的演示或内网环境。

9. 常见问题与排查方法

在搭建和运行过程中,你可能会遇到以下问题。这里提供通用的排查思路。

问题现象可能原因排查方式解决方案
后端启动失败,端口被占用8080 端口已被其他程序(如另一个 SpringBoot 应用、Tomcat)使用。1. 查看启动日志错误信息。
2. 使用命令netstat -ano | findstr :8080(Win) 或lsof -i:8080(Mac/Linux) 查看占用进程。
1. 终止占用端口的进程。
2. 在application.yml中修改server.port为其他端口,如8090
前端npm install失败或极慢1. 网络问题,无法连接 npm 仓库。
2. Node.js 版本不兼容。
3. 项目依赖存在冲突。
1. 检查网络连接。
2. 查看错误日志,确认是哪个包失败。
3. 运行node -vnpm -v检查版本。
1. 配置 npm 淘宝镜像:npm config set registry https://registry.npmmirror.com
2. 使用nvm管理 Node.js 版本,切换到项目要求的版本。
3. 删除node_modulespackage-lock.json,重新npm install
前端访问后端 API 出现 CORS 错误浏览器跨域策略阻止。前端运行在localhost:8081,后端在localhost:8080,属于不同源。浏览器开发者工具 Console 中看到Access-Control-Allow-Origin相关错误。后端解决(推荐):在 SpringBoot 中配置全局 CORS。添加一个配置类:
java<br>@Configuration<br>public class CorsConfig implements WebMvcConfigurer {<br> @Override<br> public void addCorsMappings(CorsRegistry registry) {<br> registry.addMapping("/**")<br> .allowedOriginPatterns("*") // 生产环境应指定具体域名<br> .allowedMethods("*")<br> .allowCredentials(true)<br> .maxAge(3600);<br> }<br>}
数据库连接失败1. 数据库服务未启动。
2.application.yml中配置的用户名、密码、数据库名错误。
3. MySQL 驱动版本不匹配。
1. 检查 MySQL 服务状态。
2. 查看后端启动日志,会有明确的连接失败信息。
3. 尝试用客户端工具(如 Navicat)使用相同配置连接。
1. 启动 MySQL 服务。
2. 仔细核对application.yml中的url,username,password
3. 确认pom.xml中 MySQL 驱动版本与安装的 MySQL 版本兼容。
登录成功但后续请求 401JWT Token 无效或已过期。前端可能未正确存储或发送 Token。1. 查看浏览器开发者工具 Network,检查请求头是否包含Authorization: Bearer <token>
2. 检查后端日志关于 Token 解析的报错。
1. 前端检查登录成功后,是否将后端返回的 token 保存到了localStorageVuex,并在 Axios 请求拦截器中正确设置。
2. 检查后端 JWT 密钥配置是否一致,Token 是否过期。
页面刷新后 404前端使用了 Vue Router 的 History 模式,但部署时 Web 服务器(如 Nginx)未正确配置。直接访问一个前端路由(如/article/1),刷新页面后返回 404。在 Web 服务器配置中添加try_files指令(见 8.3 节 Nginx 配置示例),将所有非静态文件请求重定向到index.html

10. 项目扩展与个性化建议

一个基础的毕设项目要想脱颖而出,进行合理的扩展和个性化改造是关键。

  1. 功能增强

    • 全文检索:集成 Elasticsearch 或使用 MySQL 全文索引,为博客文章添加搜索功能。
    • 第三方登录:接入 GitHub、Gitee、微信等 OAuth2 登录,丰富用户注册方式。
    • 文章统计:增加文章阅读量计数、点赞、收藏功能。
    • SEO 优化:为每篇文章生成静态的 SEO 友好 URL(Slug),并添加sitemap.xml
    • 后台数据仪表盘:使用 ECharts 等图表库,在后台首页展示文章数、用户数、访问趋势等数据。
  2. 技术深化

    • 权限细化:将简单的登录鉴权升级为基于角色的访问控制(RBAC),实现不同角色(管理员、编辑、普通用户)的权限管理。
    • 接口安全:增加 API 限流、防重放攻击、敏感操作日志记录等。
    • 代码优化:引入 MapStruct 简化对象转换,使用 Spring Cache 缓存热点数据,用 Validation 做更严格的参数校验。
  3. 部署与运维

    • 容器化:编写Dockerfiledocker-compose.yml,将前后端和数据库容器化,实现一键部署。
    • CI/CD:使用 GitHub Actions 或 Jenkins,配置自动化测试和部署流水线。
    • 监控与日志:集成 Spring Boot Actuator 暴露健康检查端点,使用 ELK 或 Loki 集中管理日志。

这个 SpringBoot + Vue3 的博客管理系统项目,提供了一个非常扎实的起点。它的价值不仅在于能直接运行,更在于其清晰的分层架构和主流的技术选型,让你能真实地触摸到一个现代 Web 应用的开发全流程。从环境搭建到功能测试,再到问题排查,整个过程本身就是一次宝贵的学习。建议你在成功运行的基础上,选择一两个感兴趣的方向进行深度扩展,这会让你的毕设作品和简历都更具竞争力。源码在手,剩下的就是你的实践和思考了。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/2 6:21:24

传输层协议UDP原理讲解+多个有趣的发问

bit::Shadow✧(≖ ◡ ≖✿ 目录 传输层 端口号 六元组 端口号 端口号范围划分 端口号0-1023不是特定端口号吗&#xff1f;为什么可以sudo绑定&#xff1f; 进程与端口号的关系 UDP协议内核格式 UDP数据加工 UDP传输不是“不可靠”吗&#xff1f;为什么还有16位校验和…

作者头像 李华
网站建设 2026/9/2 6:21:01

EPANET-MSX的Python封装:供水管网水质模拟与批量参数优化实践

简介&#xff1a;面向供水管网模拟开发者的EPANET-MSX-Python-wrapper资源包&#xff0c;提供EPANET-MSX多相扩展模块的Python接口&#xff0c;解决在Python环境中调用C库、建立与运行供水网络水质模型等问题。包内共5个文件&#xff0c;核心为epanetmsxmodule.py&#xff08;封…

作者头像 李华
网站建设 2026/9/2 6:19:13

docker实现excel mcp服务

使用docker compose 服务来启动excel-mcp-server docker-compose.yml文件 version: 3.8 services:excel-mcp:image: python:3.11-slimcontainer_name: excel-mcp-serverrestart: unless-stoppedvolumes:# 将本地 Excel 文件夹映射到容器内- ./excel_files:/app/excel_filesen…

作者头像 李华
网站建设 2026/9/2 6:16:32

NCGR:BEV感知中相机外参噪声的自适应矫正方法

如果你正在做自动驾驶或机器人领域的3D目标检测&#xff0c;特别是使用纯视觉的BEV&#xff08;鸟瞰图&#xff09;感知方案&#xff0c;那么你一定遇到过这个令人头疼的问题&#xff1a;模型在实验室标定完美的数据上表现优异&#xff0c;但一到真实世界&#xff0c;摄像头因为…

作者头像 李华
网站建设 2026/9/2 6:15:35

FPGA数字信号处理:用Vivado FIR IP核设计滤波器实战指南

简介&#xff1a;面向FPGA数字信号处理实践&#xff0c;以Vivado集成开发环境中的FIR Compiler IP核为主线&#xff0c;系统讲解FIR滤波器从参数配置、系数导入、逻辑综合到仿真验证的完整实现流程&#xff0c;适合通信、音频、图像处理等领域的FPGA开发者和数字信号处理学习者…

作者头像 李华
网站建设 2026/9/2 6:15:15

Polaris复现笔记(从准备到成功进入页面登陆)

我的电脑已经有VMware Workstation Pro&#xff0c;直接在VMware里面装Ubuntu系统。 一、 下载Ubuntu镜像 从官网https://link.wtturl.cn/?targethttps%3A%2F%2Freleases.ubuntu.com%2F24.04%2F&sceneim&aid497858&langzh 下载ubuntu-24.04.3-live-server-amd64.i…

作者头像 李华