跳到主要内容

项目介绍

Personal Blog Backend 是一个基于模块化单体架构的个人博客后端系统,使用 Spring Boot 3 + Java 21 构建。

##⚡ 快速了解

只需 5 分钟,你就能了解本项目的核心特性并成功启动!

🎯 项目定位

这是一个生产级的博客后端系统,专注于:

  • 🏗️ 架构设计 - 模块化单体,为微服务演进预留空间
  • 🛡️ 代码质量 - ArchUnit 守护架构规则,完整的测试体系
  • 📚 开发文档 - 从快速上手到深入指南一应俱全

💎 核心特性

特性说明
🔧 开箱即用BaseServiceImpl 提供安全的增量更新、自动 DTO 验证
🔐 JWT 认证Security 三链架构,支持角色权限控制 (RBAC)
💾 二级缓存Redis + Caffeine,灵活的缓存策略
📊 API 文档SpringDoc 自动生成 Swagger UI
🧪 架构测试ArchUnit 自动守护依赖规则
🚀 性能优化Resilience4j 限流熔断,MapStruct 高效转换

🛠️ 技术栈

核心框架

  • Spring Boot 3.5.7
  • Java 21 (LTS)
  • MyBatis-Plus 3.5.14

数据存储

  • MySQL 9.4.0 - 主数据库
  • Redis - 缓存和会话
  • MyBatis-Plus Auto DDL - 自动维护数据库表结构

开发工具

  • Lombok 1.18.42 - 减少样板代码
  • MapStruct 1.6.3 - Bean 映射
  • ArchUnit 1.4.1 - 架构测试

其他

  • SpringDoc 2.8.14 - API 文档
  • JWT (JJWT 0.13.0) - Token 认证
  • Resilience4j - 容错组件

🏗️ 架构设计

模块化单体

blog-application (启动类)
↓ 依赖
blog-modules (业务模块)
├── blog-system (用户、角色、权限)
├── blog-article (文章管理)
├── blog-comment (评论系统)
└── blog-file (S3 文件存储)
↓ 依赖
blog-common (公共组件)
└── BaseServiceImpl (核心框架)

关键设计原则

API-Service 双层分离
每个模块包含 api (DTO/VO/Interface) 和 service (实现) 两层。

严格的依赖规则

  • Service → API ✅
  • Service ↔ Service ❌ (禁止跨模块直接调用)

微服务就绪

  • 无跨模块 SQL Join
  • 通过接口调用解耦

📊 项目评分

根据项目评价报告,本项目综合评分:

9.2 / 10 ⭐⭐⭐⭐⭐

优势

  • ✅ 架构设计清晰
  • ✅ 代码质量高
  • ✅ 测试覆盖完善
  • ✅ 文档体系完整

🚀 快速开始

环境要求

  • ☕ JDK 21+
  • 📦 Maven 3.6+
  • 🗄️ MySQL 8.0+
  • 🔴 Redis 6.0+

3 分钟启动

# 1. 克隆项目
git clone https://github.com/liusxml/personal-blog-backend.git
cd personal-blog-backend

# 2. 配置数据库(见快速启动指南)
vim blog-application/src/main/resources/application.yml

# 3. 启动应用
mvn spring-boot:run -pl blog-application

# 4. 访问 Swagger UI
open http://localhost:8080/swagger-ui.html

详细步骤请查看 快速启动指南


📚 学习路径

新手路径

  1. 快速启动 - 5 分钟启动项目
  2. 架构总览 - 理解系统设计
  3. 开发规范 - 编码标准
  4. API 参考 - REST API 文档

进阶路径

  1. Base Framework - 核心框架深度解析
  2. Security 三链 - 认证授权机制
  3. ArchUnit 测试 - 架构测试实战
  4. 缓存策略 - 性能优化

🎯 适用场景

✅ 适合

  • 个人博客后端系统
  • Spring Boot 3 学习项目
  • 模块化架构实践
  • 微服务演进参考

⚠️ 不适合

  • 超大规模分布式系统(可演进为微服务)
  • 实时通讯应用(需额外 WebSocket 支持)

🤝 贡献

欢迎提交 Issue 和 Pull Request!

贡献前请阅读


📄 许可证

MIT License


🔗 快速链接


准备好了吗? 👉 开始快速启动