基于 Spring Boot 和 SQLite 的轻量级班级相册与相片管理系统,支持图片上传、标签分类、评论管理、基础权限控制,并集成 AI 能力辅助审核与打标签,适合部署在班级/小团队的内网或个人服务器上。
- 相册管理:创建、编辑、删除相册,按相册浏览照片。
- 照片管理:上传图片/视频、生成缩略图、查看详情、批量操作。
- 标签与分类:支持标签、标签分类管理,按标签检索内容。
- 评论系统:对照片进行评论、查看评论列表。
- 用户与权限:基础的用户登录、权限校验与拦截。
- 系统配置:系统参数配置、黑名单、日志查看等。
- AI 能力:
- 智能内容审核与建议(基于 DeepSeek/Qwen 等接口)。
- 自动标签/分类建议,辅助整理相册内容。
- 运行监控:通过 Actuator 和 Micrometer 暴露基础运行指标。
具体接口见
controller包:如AlbumController、PhotoController、UserController、AIController等。
- 语言与运行环境
- Java 21
- Maven(构建工具)
- 后端框架
- Spring Boot 2.7.5
- Spring Web、Spring JDBC、Spring AOP
- Spring Cache + Caffeine 缓存
- HikariCP 连接池
- 数据库
- SQLite(单文件数据库,文件位于
./database/album.db)
- SQLite(单文件数据库,文件位于
- 日志与监控
- Log4j2
- Micrometer + Spring Boot Actuator
- 前端
- 原生 HTML/CSS/JavaScript
- Vue.js
- Element UI
- ECharts
项目核心结构如下(省略部分细节文件):
pom.xml:Maven 项目配置,依赖与打包配置。src/main/java/com/classalbum/ClassAlbumApplication.java:应用入口。controller/:Web 接口层(相册、照片、用户、系统配置、AI 等)。service/和service/impl/:业务逻辑层。dao/和dao/impl/:数据访问层,基于 JDBC 操作 SQLite。entity/:数据库实体定义。dto/:前后端交互使用的数据传输对象。config/:缓存、数据源、监控、Spring 配置等。interceptor/:访问日志、权限校验、防爬虫、初始化拦截器。aspect/:日志切面等 AOP 相关代码。util/:文件、图片、视频处理、加密、AI 调用等工具类。
src/main/resources/application.yml:应用配置(端口、上下文路径、数据源、缓存、日志等)。log4j2.xml:日志输出配置。spring-config.xml、META-INF/spring.factories:Spring 相关扩展配置。
src/main/webapp/index.html、admin.html、login.html、setup.html:主要前端页面。css/:页面样式。js/:前端脚本逻辑。lib/:前端依赖(Vue、Element UI、ECharts 等)。
database/album.db及其 WAL 文件:SQLite 数据库文件(运行时生成/使用)。
logs/- 运行日志、错误日志文件。
通过 .gitignore,target/、logs/、数据库文件等不会被提交到 Git 仓库。
- JDK:Java 21(建议安装 OpenJDK 21 或更高兼容版本)
- Maven:3.6+(确保已配置
MAVEN_HOME且mvn命令可用) - 操作系统:Windows / macOS / Linux 均可
在项目根目录执行以下命令:
# 1. 编译并打包(跳过测试可视需要调整)
mvn clean package
# 2. 运行打包好的 Spring Boot 可执行 JAR
java -jar target/class-album-system-1.0-SNAPSHOT.jar应用启动后默认配置:
- 监听端口:
8081 - 上下文路径:
/class-album
因此可通过以下地址访问:
- 前台首页:http://localhost:8081/class-album/index.html
- 管理后台:http://localhost:8081/class-album/admin.html
- 登录页:http://localhost:8081/class-album/login.html
如需在开发模式下运行,也可以使用:
mvn spring-boot:run主要配置位于 application.yml:
server.port:服务端口,默认8081。server.servlet.context-path:上下文路径,默认/class-album。spring.datasource.url:SQLite 数据库连接串,默认使用项目根目录下./database/album.db。spring.servlet.multipart.*:上传文件大小限制(默认单文件/总请求 1024MB)。spring.cache:使用 Caffeine 的缓存策略。management.*:Actuator 监控端点与指标配置。
如需修改数据库位置或端口,只需调整 application.yml 后重新启动服务。
项目中包含 AI 相关的工具类与接口,例如:
DeepSeekUtilQwenVisionUtilAIController、AIService等
这些类通常会调用外部大模型/视觉模型 API。使用前请:
- 根据实际使用的模型服务,在对应工具类中配置 API Key、接口地址等。
- 避免将真实密钥提交到 Git 仓库,可通过环境变量或外部配置注入。
- 欢迎通过 Issue 提出功能建议或问题反馈。
- 欢迎提交 Pull Request 修复 bug 或改进代码结构。
- 在提交代码前建议本地执行:
mvn clean package确保项目可以正常构建。
- 提交前请确认:
- 未提交本地数据库文件(
database/*.db*)、日志(logs/)和其他编译产物(target/)。
- 未提交本地数据库文件(
本项目采用 BSD 3-Clause License 开源协议,详情见仓库中的 LICENSE 文件。