从零手写实现 Spring 风格 IOC 容器、MyBatis 风格 ORM 框架,以及完整的视频管理平台。
如果你希望参与本项目开发,请先阅读 贡献指南,其中包含模块职责、接口开发流程、数据库变更、缓存约定和提交规范。
- 此项目已有前端示例
- IOC 容器:组件扫描、
@Autowired字段注入、@Bean配置类、三级缓存解决循环依赖、Kahn 算法拓扑排序 - ORM 框架:Mapper 接口代理、注解驱动 SQL、动态 SQL Provider、自动结果集映射、事务模板方法
- Web 框架:基于 JDK HttpServer,RESTful 路由、多参数绑定、过滤器链、静态资源服务
- 定时任务:
@Task注解驱动,独立守护线程循环执行
- 用户认证:手机号+验证码登录(自动注册)、JWT Token、Redis 缓存、HMAC-SHA256 密码加密
- 视频管理:MP4 上传(手动解析 mvhd box 获取时长)、分页列表、详情缓存、推荐算法
- 社交功能:评论、点赞、收藏、关注系统、观看历史(全部 Redis 缓存)
- 缓存系统:Redis Pub/Sub 异步重建、分布式锁、多数据结构(ZSet/Hash/Set)
- 运营功能:优惠券抢购、通知系统、管理员后台(审核、统计、用户管理)
JDK 17+、Maven 3.8+、MySQL 8.0+、Redis 5.0+
项目已支持 Docker Compose,一键启动 MySQL + Redis + 应用服务。
# 1. 克隆项目
git clone <repository-url>
cd video-management
# 2. 准备数据库初始化脚本(可选)
mkdir -p database/init
cp docs/reference/schema.md database/init/01_init.sql
# 或将建表语句放入 database/init/ 目录,容器首次启动时自动执行
# 3. 构建并启动所有服务
docker compose up -d --build
# 4. 查看日志
docker compose logs -f app服务启动后可通过以下方式访问:
| 服务 | 地址 | 说明 |
|---|---|---|
| 应用 | http://localhost:8086 | 视频管理服务 |
| MySQL | localhost:3306 | root/1234 |
| Redis | localhost:6379 | 无密码 |
# 停止并移除所有容器
docker compose down
# 停止并清除数据卷
docker compose down -v环境变量:所有连接参数(
DB_HOST、DB_USER、DB_PASSWORD、REDIS_HOST等)均可通过修改docker-compose.yml的environment字段自定义。
- 克隆项目并编译
git clone <repository-url>
cd video-management
mvn clean package-
创建数据库并执行 建表语句
-
修改配置
- 数据库:
conn-database/src/main/resources/hikari.properties(支持DB_HOST等环境变量覆盖) - Redis:
video-server/src/main/java/com/topview/config/RedissonConfig.java(支持REDIS_HOST、REDIS_PORT、REDIS_PASSWORD环境变量)
- 数据库:
-
启动服务
cd video-server/target
java -jar video-server-1.0-SNAPSHOT.jar服务默认监听 8086 端口。
video-management/
├── conn-database/ # ORM 框架
├── my-spring-boot/ # IOC 容器 + Web 框架
├── video-common/ # 公共工具(Result/JWT/工具类)
├── video-pojo/ # 实体/DTO/VO
└── video-server/ # Web 服务(主入口)
├── Controller/ # 8 个控制器,40+ 接口
├── Service/ # 11 个服务实现
├── Mapper/ # 8 个 Mapper 接口
├── Config/ # Redisson/Database/Async 配置
├── Filter/ # Token 认证过滤器
├── Task/ # 播放量定时同步
└── Listener/ # Redis Pub/Sub 缓存重建
| 技术 | 版本 | 用途 |
|---|---|---|
| Java | 17+ | 开发语言 |
| MySQL | 8.0.33 | 主数据库 |
| HikariCP | 5.0.1 | 连接池 |
| Redis (Redisson) | 3.36.0 | 缓存、Pub/Sub、分布式锁 |
| Jackson | 2.15.2 | JSON 序列化 |
| JDK HttpServer | 内置 | HTTP 服务器(8086 端口) |
| my-spring-boot (自研) | 1.0-SNAPSHOT | IOC 容器 + Web 框架 |
| conn-database (自研) | 1.0-SNAPSHOT | ORM 框架 |
| 模块 | 状态 |
|---|---|
| 自研框架 | ✅ 完成 |
| 用户模块 | ✅ 完成 |
| 视频模块 | ✅ 完成 |
| 社交功能 | ✅ 完成 |
| 缓存系统 | ✅ 完成 |
| 运营功能 | ✅ 完成 |
| 搜索功能 | 🚧 开发中 |
- 类扫描仅支持文件系统 class 文件,暂不支持 JAR 包扫描
- 数据库与 Redis 配置路径见上方「快速开始」步骤 3
- 首次部署需执行 建表语句,
follow、coupon、user_coupon为后续新增表 - 系统架构详情、设计亮点请查看 架构文档
本项目使用 木兰宽松许可证,第2版 (Mulan PSL v2) 开源。