Skip to content

Repository files navigation

Video Management System

从零手写实现 Spring 风格 IOC 容器、MyBatis 风格 ORM 框架,以及完整的视频管理平台。

ORM IOC API Schema Architecture DevLog Contributing MulanPSL

贡献指南

如果你希望参与本项目开发,请先阅读 贡献指南,其中包含模块职责、接口开发流程、数据库变更、缓存约定和提交规范。

核心特性

前端项目

自研框架

  • 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 一键部署(推荐)

项目已支持 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_HOSTDB_USERDB_PASSWORDREDIS_HOST 等)均可通过修改 docker-compose.ymlenvironment 字段自定义。

方式二:本地构建运行

  • 克隆项目并编译
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_HOSTREDIS_PORTREDIS_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
  • 首次部署需执行 建表语句followcouponuser_coupon 为后续新增表
  • 系统架构详情、设计亮点请查看 架构文档

许可证

本项目使用 木兰宽松许可证,第2版 (Mulan PSL v2) 开源。

About

基于自制简易 MyBatis 和 SpringBoot 框架的视频管理后端

Topics

Resources

Contributing

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages