diff --git a/README.md b/README.md index 8c726e5..3581551 100644 --- a/README.md +++ b/README.md @@ -67,10 +67,29 @@ - ## 快速开始 -### 前端 +### 先决条件 + +在运行项目之前,请月报满足以下条件: + +- Java环境 + - JDK8或更高版本已安装 + - 环境变量`JAVA_HOME`已配置 +- Maven(可选): + - 如果需要从源码构建,安装Maven3.6+ +- 数据库: + - SQLite:无需额外安装,默认使用文件数据库(upload-file.db) + - MySQL(可选):需安装MySQL8.x,并创建数据库`upload-file` +- 命令行工具: + - Windows 用户建议使用 PowerShell 或 CMD + - Linux/Mac 用户使用终端即可 + + + +### 构建项目 + +#### 前端 1. 克隆项目到本地: ```bash @@ -92,7 +111,7 @@ 4. 访问应用: 在浏览器中打开 http://localhost:8080。 -### 后端 +#### 后端 1. 进入后端目录: @@ -116,6 +135,68 @@ 4. 接口地址: 默认运行在 http://localhost:10086。 + +### 运行项目 + +#### 下载 JAR 文件 + +[Download upload-file-backend-1.0-SNAPSHOT.jar](https://gitee.com/czh-dev/upload-hub/tree/main/dist/upload-file-backend-1.0-SNAPSHOT.jar) + +#### 默认模式(SQLite) + +无需额外配置,直接运行,默认使用 SQLite 数据库: + +```bash +java -jar upload-file-backend-1.0-SNAPSHOT.jar +``` + +- 说明: + - SQLite 数据库文件`upload-file.db`将自动创建在当前目录 + - 表结构和初始数据(如存储配置)会自动初始化 +- 日志输出(可选): + - 启动后,检查日志是否有`Using SQLite datasource ` + + + +#### MySQL模式 + +如果你希望使用M有SQL数据库,请按照以下步骤操作: + +1. 准备MySQL数据库: + + - 启动MySQL服务 + + - 创建数据库 + + ```sql + CREATE DATABASE upload_file DEFAULT CHARACTER SET utf8mb4; + ``` + + - 导入项目sql目录中的`upload-file.sql`脚本 + +2. 运行命令: + + 使用以下命令启动,替换用户名和密码为你的 MySQL 配置(以下以 root/root 为例): + + ```sql + java -jar upload-file-backend-1.0-SNAPSHOT.jar --mysql.datasource.url="jdbc:mysql://localhost:3306/upload-file?useSSL=false&serverTimezone=Asia/Shanghai" --mysql.datasource.username=root --mysql.datasource.password=root + ``` + + + +#### 默认端口 + +- 服务默认运行在 `10086` 端口,可通过配置文件或参数修改: + + ```bash + java -jar upload-file-backend-1.0-SNAPSHOT.jar --server.port=8080 + ``` + + + + + + ## 目录结构 ```text @@ -224,25 +305,39 @@ docker run -d --name upload-file \ ### 后端配置文件 (application.yml) ```yaml +# 服务端配置 server: - port: 10086 + port: 10086 # 服务运行的端口号,默认值为 10086,可通过 --server.port 参数覆盖,例如 --server.port=8080 +# Spring 框架相关配置 spring: + # 数据源配置,默认使用 SQLite datasource: - url: jdbc:mysql://localhost:3306/upload-file?useSSL=false&serverTimezone=Asia/Shanghai - username: root - password: your-password - driver-class-name: com.mysql.cj.jdbc.Driver + url: jdbc:sqlite:./upload-file.db # SQLite 数据库的连接 URL,文件路径为当前目录下的 upload-file.db + driver-class-name: org.sqlite.JDBC # SQLite 的 JDBC 驱动类名,确保项目依赖中包含 sqlite-jdbc + # 文件上传相关配置 servlet: multipart: - max-file-size: 500MB - max-request-size: 500MB + max-file-size: 500MB # 单个上传文件的最大大小限制,设置为 500MB,支持大文件上传 + max-request-size: 500MB # 单次请求的最大大小限制,设置为 500MB,与 max-file-size 保持一致 + # Spring 主配置 main: - allow-bean-definition-overriding: true + allow-bean-definition-overriding: true # 允许 Bean 定义覆盖,解决相同 Bean 名冲突问题,适用于多数据源配置 +# MySQL 数据源配置(可选,通过命令行或环境变量覆盖) +mysql: + datasource: + url: ${MYSQL_URL:} # MySQL 数据库的连接 URL,默认为空,可通过环境变量 MYSQL_URL 或命令行参数 --mysql.datasource.url 指定 + # 示例:jdbc:mysql://localhost:3306/upload-file?useSSL=false&serverTimezone=Asia/Shanghai + username: ${MYSQL_USERNAME:} # MySQL 用户名,默认为空,可通过 MYSQL_USERNAME 或 --mysql.datasource.username 指定 + password: ${MYSQL_PASSWORD:} # MySQL 密码,默认为空,可通过 MYSQL_PASSWORD 或 --mysql.datasource.password 指定 + driver-class-name: com.mysql.cj.jdbc.Driver # MySQL 的 JDBC 驱动类名,确保项目依赖中包含 mysql-connector-java + +# 日志配置 logging: level: - cn.czh.mapper: debug + cn.czh.mapper: debug # 设置 cn.czh.mapper 包下的日志级别为 DEBUG,方便查看 MyBatis SQL 执行详情 + org.springframework.jdbc: debug # 设置 Spring JDBC 的日志级别为 DEBUG,方便调试数据源初始化和 SQL 执行 ``` diff --git a/upload-file-backend/src/main/java/cn/czh/config/DataSourceConfig.java b/upload-file-backend/src/main/java/cn/czh/config/DataSourceConfig.java index 3317596..f1529e1 100644 --- a/upload-file-backend/src/main/java/cn/czh/config/DataSourceConfig.java +++ b/upload-file-backend/src/main/java/cn/czh/config/DataSourceConfig.java @@ -1,5 +1,6 @@ package cn.czh.config; +import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.jdbc.DataSourceBuilder; import org.springframework.context.annotation.Bean; @@ -11,6 +12,7 @@ import org.springframework.jdbc.datasource.init.ResourceDatabasePopulator; import javax.sql.DataSource; +@Slf4j @Configuration public class DataSourceConfig { @@ -37,6 +39,7 @@ public class DataSourceConfig { boolean useMySQL = !mysqlUrl.isEmpty() && !mysqlUsername.isEmpty() && !mysqlPassword.isEmpty(); if (useMySQL) { + log.info("Using MySQL database."); return DataSourceBuilder.create() .url(mysqlUrl) .username(mysqlUsername) @@ -44,6 +47,7 @@ public class DataSourceConfig { .driverClassName(mysqlDriverClassName) .build(); } else { + log.info("Using SQLite database."); // 默认使用 SQLite,无需 username 和 password return DataSourceBuilder.create() .url(defaultUrl)