项目介绍
Personal Blog Backend 是一个基于 Spring Boot 3 + Java 21 构建的现代化个人博客后端系统,采用模块化单体架构设计,兼顾开发效率与架构演进能力。
� 5 分钟快速上手
已经迫不及待了?直接跳转到 快速启动指南 开始你的第一个 API 调用!
✨ 核心亮点
🏗️ 模块化单体架构
API/Service 双层分离,严格的模块依赖规则,随时可拆分为微服务
🔐 JWT 认证授权
Spring Security 6 多链配置,支持 RBAC 角色权限控制
💾 智能缓存策略
Redis + Caffeine 二级缓存,注解驱动,开箱即用
🧪 架构守护测试
ArchUnit 自动验证依赖规则,防止架构腐化
🛠️ 技术栈
| 分类 | 技术 | 版本 | 说明 |
|---|---|---|---|
| 核心框架 | Spring Boot | 3.5.7 | 最新 LTS 版本 |
| 开发语言 | Java | 21 | LTS,支持虚拟线程 |
| 持久层 | MyBatis-Plus | 3.5.14 | 增强型 ORM 框架 |
| 数据库 | MySQL | 8.0+ | 主数据存储 |
| 缓存 | Redis + Caffeine | - | 分布式 + 本地二级缓存 |
| 认证 | Spring Security + JWT | JJWT 0.13.0 | 无状态 Token 认证 |
| API 文档 | SpringDoc OpenAPI | 2.8.14 | Swagger UI 自动生成 |
| 对象映射 | MapStruct | 1.6.3 | 编译期高性能转换 |
| 架构测试 | ArchUnit | 1.4.1 | 架构规则自动验证 |
�️ 架构概览
┌─────────────────────────────────────────────────────────┐
│ blog-application │
│ (启动入口 + 全局配置) │
└─────────────────────────────────────────────────────────┘
│ 依赖
┌──────────────────┼──────────────────┐
▼ ▼ ▼
┌───────────────┐ ┌───────────────┐ ┌───────────────┐
│ system-service│ │article-service│ │ file-service │
│ (用户/角色) │ │ (文章) │ │ (S3 存储) │
└───────────────┘ └───────────────┘ └───────────────┘
│ │ │
▼ ▼ ▼
┌───────────────┐ ┌───────────────┐ ┌───────────────┐
│ system-api │ │ article-api │ │ file-api │
│ (DTO/VO) │ │ (DTO/VO) │ │ (DTO/VO) │
└───────────────┘ └───────────────┘ └───────────────┘
│
▼
┌─────────────────────────────────────────────────────────┐
│ blog-common │
│ (BaseServiceImpl, 异常, 工具类, 安全) │
└─────────────────────────────────────────────────────────┘
设计原则
| 规则 | 说明 |
|---|---|
| ✅ API-Service 分离 | 每个模块包含 api (DTO/VO) 和 service (实现) 两层 |
| ✅ 单向依赖 | Service → API → Common,禁止反向依赖 |
| ❌ 禁止跨模块调用 | Service 之间不能直接调用,通过 API 接口解耦 |
| ❌ 禁止跨模块 JOIN | SQL 不能跨模块关联,为微服务拆分做准备 |
� 业务模块
| 模块 | 状态 | 功能描述 |
|---|---|---|
| blog-system | ✅ 已完成 | 用户注册/登录、角色管理、JWT 认证 |
| blog-article | 🚧 开发中 | 文章发布、编辑、分类、标签 |
| blog-comment | 📋 规划中 | 评论、回复、点赞 |
| blog-file | ✅ 已完成 | S3 兼容存储(Bitiful)、预签名上传 |
🚀 快速开始
环境要求
- ☕ JDK 21+ — 下载 OpenJDK
- 📦 Maven 3.6+ — 下载 Maven
- 🗄️ MySQL 8.0+ — 主数据库
- 🔴 Redis 6.0+ — 缓存服务(可选)
30 秒预览
# 克隆项目
git clone https://github.com/liusxml/personal-blog-backend.git
cd personal-blog-backend
# 配置数据库(修改 application.yaml)
# 启动应用
mvn spring-boot:run -pl blog-application
# 访问 API 文档
open http://localhost:8080/swagger-ui.html
👉 详细步骤请查看 快速启动指南
📚 学习路径
🌱 入门路径
🌳 进阶路径
- Base Framework — 核心框架解析
- Security 配置 — 认证授权机制
- 缓存策略 — 性能优化
- ArchUnit 测试 — 架构守护实践
� 相关链接
| 资源 | 链接 |
|---|---|
| � GitHub 仓库 | liusxml/personal-blog-backend |
| 📖 在线文档 (Cloudflare) | personal-blog-docs.pages.dev |
| 📖 在线文档 (Vercel) | personal-blog-docs-bice.vercel.app |
| 🐛 问题反馈 | GitHub Issues |
📄 开源协议
本项目基于 MIT License 开源,欢迎使用和贡献!
准备好了吗? 👉 开始快速启动