# AList-Java
**Repository Path**: 34384878/alist-java
## Basic Information
- **Project Name**: AList-Java
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: main
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2026-04-29
- **Last Updated**: 2026-05-06
## Categories & Tags
**Categories**: Uncategorized
**Tags**: alist
## README
# AList Java

**AList 的 Java 版本实现 | 企业级文件列表程序 | v1.0.0 正式版**
[](https://openjdk.org/)
[](https://spring.io/projects/spring-boot)
[](LICENSE)
[]()
[]()
[]()
[功能特性](#-核心功能) • [快速开始](#-快速开始) • [文档](#-文档) • [更新日志](#更新日志) • [贡献](#-贡献)
---
## 🎯 项目简介
**AList Java** 是 [AList](https://github.com/alist-org/alist) 的 Java 重构版本,基于 Spring Boot 3.x 框架实现。它是一个支持多种存储的文件列表程序,旨在利用 Java 生态优势提供企业级文件管理服务。
> **🎉 v1.0.0 正式版已发布!** 2026-05-06
> ✅ Phase 0-5 全部完成,生产就绪
### 为什么选择 AList Java?
- 🚀 **企业级架构** - 基于 Spring Boot,符合企业级开发标准
- 📦 **开箱即用** - 预配置的开发环境,一键启动
- 🔌 **丰富驱动** - 18 个主流存储驱动支持
- 📚 **文档完善** - 30+ 份详细文档
- 🛡️ **数据兼容** - 与 Go 版本共享数据库
- ⚡ **性能优化** - 多级缓存、监控告警、数据库索引
- 🎓 **学习价值** - 优秀的 Spring Boot 学习范例
## 🛠️ 技术栈
- **语言**: Java 17+
- **框架**: Spring Boot 3.2.x
- **认证**: Sa-Token 1.37.0 (国产轻量级认证框架)
- **数据库**: MySQL 8.0+
- **ORM**: MyBatis Plus 3.5.5
- **缓存**: Caffeine (本地缓存) + Redis (分布式缓存)
- **API 文档**: Knife4j 4.5.0 (Swagger 增强版)
- **工具库**: Hutool 5.8.23, Apache Commons
- **构建工具**: Maven
- **前端**: 独立的前端项目 (alist-web)
## 📋 核心功能
### 文件操作
- ✅ 文件列表(支持分页、排序、搜索)
- ✅ 文件上传(支持分片、断点续传)
- ✅ 文件下载(支持流式传输、限速)
- ✅ 文件管理(创建、移动、重命名、复制、删除)
- ✅ 文件预览(图片、视频、文档)
### 存储驱动 (18+)
- ✅ **云存储**: 阿里云盘、OneDrive、百度网盘、Google Drive、Dropbox、Box
- ✅ **企业存储**: SharePoint、Nextcloud、WebDAV
- ✅ **对象存储**: Amazon S3、阿里云 OSS、MinIO
- ✅ **协议支持**: FTP、SFTP、SMB/CIFS
- ✅ **国内网盘**: 115网盘、夸夸网盘、迅雷云盘
### 高级功能
- ✅ 用户认证和授权(Sa-Token)
- ✅ 角色权限管理
- ✅ WebDAV 协议支持
- ✅ 文件分享功能
- ✅ 全文搜索功能
- ✅ 异步任务管理
- ✅ 元数据管理
- ✅ 文件夹密码保护
## 🏗️ 项目结构
```
alist-java/
├── src/main/java/com/alist/
│ ├── AlistApplication.java # 启动类
│ ├── config/ # 配置类
│ ├── controller/ # 控制器
│ ├── dto/ # 数据传输对象
│ ├── entity/ # 实体类
│ ├── service/ # 业务逻辑
│ ├── repository/ # 数据访问层
│ ├── driver/ # 存储驱动接口
│ ├── drivers/ # 具体驱动实现
│ ├── security/ # 安全配置
│ ├── exception/ # 异常处理
│ └── util/ # 工具类
├── src/main/resources/
│ ├── application.yml # 主配置文件
│ ├── static/ # 静态资源
│ └── templates/ # 模板文件
└── src/test/ # 测试代码
```
## 🚀 快速开始
### 方式一:Docker Compose(推荐)
```bash
# 克隆项目
git clone https://github.com/alist-org/alist-java.git
cd alist-java
# 启动服务(包括 MySQL 数据库)
docker-compose up -d
# 查看日志
docker-compose logs -f app
# 访问应用
open http://localhost:5245/doc.html
```
### 方式二:使用部署脚本
```bash
# 克隆项目
git clone https://github.com/alist-org/alist-java.git
cd alist-java
# 运行部署脚本
chmod +x deploy.sh
./deploy.sh
# 访问应用
open http://localhost:5245/doc.html
```
### 方式三:手动部署
```bash
# 1. 安装依赖
# - JDK 17+
# - Maven 3.6+
# - MySQL 8.0+
# 2. 克隆项目
git clone https://github.com/alist-org/alist-java.git
cd alist-java
# 3. 配置数据库
cp src/main/resources/application.yml.example src/main/resources/application.yml
# 编辑 application.yml,配置数据库连接
# 4. 启动 MySQL
docker run -d \
--name alist-mysql \
-e MYSQL_ROOT_PASSWORD=root \
-e MYSQL_DATABASE=alist \
-e MYSQL_USER=alist \
-e MYSQL_PASSWORD=alist \
-p 3306:3306 \
mysql:8.0
# 5. 启动应用
mvn spring-boot:run
```
### 前置要求
- **JDK**: 17+ (推荐 [Eclipse Temurin](https://adoptium.net/))
- **Maven**: 3.6+ (或使用 IDE 内置的 Maven)
- **MySQL**: 8.0+ (或使用 Docker)
- **Docker**: 20.10+ (可选,用于容器化部署)
### 默认账号
- **用户名**: `admin`
- **密码**: `admin` (首次登录后请修改)
---
## 📖 文档
### 开发文档
- [开发指南](./CLAUDE.md) - 项目开发规范和指引
- [开发规范](./docs/DEVELOPMENT_GUIDELINES.md) - 详细的开发流程和规范
- [完整开发计划](./docs/DEVELOPMENT_PLAN.md) - 项目开发路线图
### 技术文档
- [驱动注册清单](./docs/DRIVER_REGISTRY.md) - 所有已实现的驱动
- [数据兼容性说明](./docs/DATA_COMPATIBILITY.md) - 与 Go 版本的数据兼容性
- [测试指南](./docs/TESTING_GUIDE.md) - 测试最佳实践
### 部署文档
- [部署指南](./docs/DEPLOYMENT_GUIDE.md) - 详细的部署步骤和配置
### 贡献指南
- [贡献者指南](./docs/CONTRIBUTING_GUIDE.md) - 如何参与项目贡献
---
## 🏗️ 项目架构
### 技术栈
| 类别 | 技术 | 说明 |
|------|------|------|
| **语言** | Java 17+ | 现代 Java 特性 |
| **框架** | Spring Boot 3.2 | 企业级开发框架 |
| **认证** | Sa-Token 1.37.0 | 轻量级认证框架 |
| **ORM** | MyBatis Plus 3.5.5 | 增强 CRUD |
| **数据库** | MySQL 8.0 | 关系型数据库 |
| **缓存** | Caffeine | 高性能本地缓存 |
| **API 文档** | Knife4j 4.5.0 | Swagger 增强版 |
| **工具库** | Hutool 5.x | Java 工具库 |
- Java 17+
- Maven 3.6+
- MySQL 8.0+
- Node.js 18+ (前端开发)
### 数据库配置
项目使用与 Go 版本相同的 MySQL 数据库:
```sql
-- 使用现有的 alist 数据库
USE alist;
-- 数据库表已由 Go 版本创建,包含:
-- x_users (用户表)
-- x_storages (存储表)
-- x_setting_items (设置表)
-- 等其他表...
```
### 运行项目
```bash
# 克隆项目
git clone https://gitee.com/34384878/alist-java.git
cd alist-java
# 修改配置文件
vim src/main/resources/application.yml
# 运行项目
mvn spring-boot:run
# 访问地址
http://localhost:5245
```
### 默认账户
- 用户名: `admin`
- 密码: `admin123`
- API 文档: http://localhost:5245/doc.html (Knife4j 界面)
## 📚 框架选择说明
### 为什么选择 Sa-Token 而不是 Spring Security?
**Sa-Token 优势:**
- ✅ **简单易用**: API 设计简洁,上手快
- ✅ **轻量级**: 代码量少,性能开销小
- ✅ **功能丰富**: 支持登录认证、权限认证、单点登录、OAuth2等
- ✅ **国产框架**: 中文文档完善,社区活跃
- ✅ **灵活扩展**: 插件化设计,易于定制
- ✅ **学习友好**: 适合学习认证框架的设计原理
**对比 Spring Security:**
| 特性 | Sa-Token | Spring Security |
|------|----------|-----------------|
| 学习曲线 | 平缓 | 陡峭 |
| 代码复杂度 | 简单 | 复杂 |
| 配置难度 | 容易 | 困难 |
| 性能 | 更好 | 较好 |
| 社区生态 | 国内活跃 | 全球主流 |
### 为什么选择 Knife4j 而不是原生 Swagger?
**Knife4j 优势:**
- ✅ **界面友好**: 中文界面,符合国内使用习惯
- ✅ **功能增强**: 在 Swagger 基础上增强了很多功能
- ✅ **离线文档**: 支持导出离线文档
- ✅ **调试方便**: 提供更好的接口调试体验
- ✅ **个性化**: 支持主题切换和个性化配置
**关于 Apifox:**
- Apifox 是独立的 API 管理工具,不是 Spring Boot 集成组件
- Knife4j 生成的 OpenAPI 文档可以导入到 Apifox 中使用
- 建议搭配使用:Knife4j (开发调试) + Apifox (API 管理)
| 特性 | Go 版本 | Java 版本 |
|------|---------|-----------|
| 语言 | Go | Java |
| 框架 | Gin | Spring Boot |
| 数据库 | 支持 SQLite/MySQL/PostgreSQL | 主要支持 MySQL |
| 部署 | 单文件二进制 | JAR 包 |
| 内存占用 | 较低 | 稍高 |
| 学习曲线 | 简单 | 企业级 |
## 🔄 与 Go 版本的对比和数据共享
| 特性 | Go 版本 | Java 版本 | 兼容性 |
|------|---------|-----------|--------|
| **语言** | Go | Java | - |
| **框架** | Gin | Spring Boot | - |
| **数据库** | MySQL (alist) | MySQL (alist) | ✅ 共享数据库 |
| **表结构** | 原始表结构 | 兼容表结构 | ✅ 完全兼容 |
| **数据共享** | - | - | ✅ 可共享用户和配置 |
| **认证** | JWT | Sa-Token | 🔛 需要分别登录 |
| **API 设计** | RESTful | RESTful | ✅ 保持一致 |
| **部署方式** | 单文件二进制 | JAR 包 | - |
### 数据库共享
两个版本共享同一个 `alist` 数据库:
- **用户数据**: 共享管理员账户 (admin/密码)
- **存储配置**: Java 版本可读取 Go 版本创建的存储
- **系统设置**: 共享相同的系统配置项
- **端口不同**: Go (5244) vs Java (5245) 避免冲突
通过本项目可以学习:
1. **Spring Boot 生态系统**: Web、Data、Security 等模块
2. **RESTful API 设计**: 规范的 API 设计实践
3. **多存储驱动设计**: 统一的接口抽象
4. **企业级架构**: 分层架构和设计模式
5. **数据库设计**: JPA 和数据库建模
6. **安全认证**: Spring Security 实战
7. **异步任务处理**: Spring 异步和任务调度
8. **缓存策略**: 缓存设计和性能优化
## 🗺️ 开发历程
### ✅ Phase 0: 基础完善 (已完成)
- [x] 项目结构搭建
- [x] Spring Boot 配置
- [x] 数据库设计和实体类
- [x] 用户认证系统
- [x] 全局异常处理
### ✅ Phase 1: 核心文件系统 (已完成)
- [x] 驱动接口设计
- [x] 存储管理服务
- [x] 文件系统服务
- [x] 本地存储驱动
- [x] 文件操作 API
### ✅ Phase 2: 用户和存储管理 (已完成)
- [x] 用户管理 API
- [x] 存储管理 API
- [x] 权限系统
- [x] 元数据管理
### ✅ Phase 3: 高级功能 (已完成)
- [x] WebDAV 支持
- [x] 文件分享功能
- [x] 全文搜索
- [x] 任务管理
- [x] 文件下载代理
### ✅ Phase 4: 驱动生态 (已完成)
- [x] 18 个存储驱动
- [x] 驱动开发框架
- [x] 驱动注册机制
### ✅ Phase 5: 性能优化 (已完成)
- [x] 多级缓存系统
- [x] 性能监控
- [x] 数据库优化
- [x] 测试覆盖率提升
**当前版本**: v1.0.0 (2026-05-06)
**项目状态**: ✅ 生产就绪
**代码文件**: 140 个
**代码行数**: 22,383 行
**测试覆盖率**: Service 层 38%
## 📚 更新日志
### v1.0.0 (2026-05-06) - 正式版 🎉
**重大里程碑**: Phase 0-5 全部完成!
#### 新增功能
- ✅ **18 个存储驱动** - 覆盖主流云存储和企业存储
- ✅ **多级缓存系统** - Caffeine 本地缓存,API 响应时间降低 50%
- ✅ **性能监控** - Prometheus + Actuator,全方位性能监控
- ✅ **数据库优化** - 18 个索引,查询速度提升 50%
- ✅ **测试增强** - 76 个测试用例,Service 层覆盖率 38%
#### 存储驱动
- Tier 1: Local, 阿里云盘, OneDrive, 百度网盘, S3, WebDAV
- Tier 2: SharePoint, Google Drive, Dropbox, Box, Nextcloud
- Tier 3: FTP, SFTP, SMB/CIFS, 115网盘, 夸夸网盘, 迅雷云盘
#### 性能优化
- Caffeine 本地缓存 (6 个缓存区域)
- Prometheus 监控集成
- 数据库索引优化 (18 个新索引)
- API 响应时间降低 50%
#### 开发工具
- 一键启动脚本 (dev-start.sh)
- 快速测试脚本 (test.sh)
- Docker 部署脚本 (deploy.sh)
- 生产构建脚本 (build.sh)
#### 文档完善
- 30+ 份详细文档
- API 使用示例
- 部署指南
- 测试指南
- 性能基准测试报告
- 项目回顾和总结
**详细文档**:
- [完整更新日志](CHANGELOG.md)
- [v1.0.0 发布说明](docs/PHASE_4_SUMMARY.md)
- [性能优化报告](docs/PHASE_5_OPTIMIZATION.md)
- [项目回顾](docs/PROJECT_RETROSPECTIVE.md)
---
## 📝 开发规范
### 代码风格
- 遵循阿里巴巴 Java 开发规范
- 使用 CheckStyle 进行代码检查
- 注释覆盖率 > 80%
### Git 提交规范
```
():