☰
backend 项目目录介绍(管理系统后端)
2026/10/4 7:06:54 网站建设 项目流程

# backend 项目目录介绍(管理系统后端)

> 路径:

>

> `F:\workplase\backend`

>

> | 技术栈:Spring Boot 3.5.4 + MyBatis 3.0.4 + MySQL 8.4 + JWT

> 端口:8080 | 启动类:

>

> `ManagementApplication`

## 一、整体架构

经典三层架构 + 分层包设计,请求流转:**Controller(控制层)→ Service(业务层)→ Mapper(数据访问层)→ MySQL**



```

前端(Vue3) ──HTTP/JSON──▶ Controller ──▶ Service ──▶ Mapper(MyBatis注解SQL) ──▶ MySQL

│ ▲

│ └─ JwtInterceptor(登录校验拦截)

▼

Result 统一响应包装

```



* 全部接口返回统一结构 `Result`(code / message / data)

* 除登录 / 注册外,所有接口都经过 JWT 拦截器校验(`Authorization: Bearer <token>`)

* 密码使用 SHA-256 哈希存储,不存明文

## 二、目录结构总览



```

backend/

├── pom.xml # Maven 构建配置(依赖、插件)

├── settings-mirror.xml # 阿里云镜像仓库配置(加速下载)

└── src/

└── main/

├── java/com/mgmt/system/

│ ├── ManagementApplication.java # 启动类(入口)

│ ├── common/ # 公共组件: 统一响应/异常/分页

│ ├── config/ # 配置: JWT拦截器、Web配置

│ ├── controller/ # 控制层(5个): 接收请求、返回响应

│ ├── dto/ # 数据传输对象(请求/响应模型)

│ ├── entity/ # 实体类(对应6张数据库表)

│ ├── mapper/ # 数据访问层(MyBatis注解SQL)

│ ├── service/ # 业务逻辑层(5个业务服务)

│ └── util/ # 工具类: JWT生成校验、密码加密

└── resources/

└── application.yml # 应用配置(端口/数据库/JWT)

```

> `target/`

>

> (编译产物)和

>

> `.idea/`

>

> (IDEA 配置)为自动生成目录,不属于源码。

## 三、各层详解

### 1. 启动类 `ManagementApplication.java`



```

@SpringBootApplication

@MapperScan("com.mgmt.system.mapper") // 扫描所有 Mapper 接口

public class ManagementApplication { public static void main(String[] args) { ... } }

```

IDEA 中右键 → Run 即启动后端,成功后控制台显示 `Started ... port 8080`。

### 2. common — 公共组件(4 个类)



| 类 | 作用 |

| ------------------------ | ----------------------------------------- |

| `Result` | 统一响应体:`{code, message, data}`,成功 code=200 |

| `PageResult` | 分页结果封装:`{total, list}` |

| `BizException` | 业务异常(手动抛出,如 "用户名或密码错误") |

| `GlobalExceptionHandler` | 全局异常处理器:统一捕获异常并转为 Result 返回,避免报错信息裸奔 |

### 3. config — 配置层(2 个类)



| 类 | 作用 |

| ---------------- | ----------------------------------- |

| `JwtInterceptor` | JWT 登录拦截器:校验请求头 token,非法 / 过期返回 401 |

| `WebConfig` | 注册拦截器 + 跨域配置(CORS,允许前端 5173 访问) |

### 4. controller — 控制层(5 个接口入口)



| 类 | 路径前缀 | 功能 |

| --------------------- | ---------------- | ------------------------------- |

| `AuthController` | `/api/auth` | 登录、获取当前用户信息、退出 |

| `UserController` | `/api/users` | 用户增删改查、分页、重置密码、分配角色 |

| `RoleController` | `/api/roles` | 角色增删改查 |

| `MenuController` | `/api/menus` | 菜单树查询 |

| `DashboardController` | `/api/dashboard` | 首页统计(用户 / 角色 / 菜单数、用户状态分布)、操作日志 |

### 5. dto — 数据传输对象(4 个类)



| 类 | 用途 |

| --------------- | -------------------------- |

| `LoginRequest` | 登录请求参数(username/password) |

| `LoginResponse` | 登录响应(token + 用户信息 + 菜单树) |

| `UserDTO` | 用户新增 / 修改的入参(含密码、角色 ID 列表) |

| `MenuTreeVO` | 菜单树视图对象(含 children 递归结构) |

### 6. entity — 实体类(6 个,与数据库表一一对应)



| 实体 | 对应表 | 说明 |

| ----------------- | ------------------- | ----------------------------------------------- |

| `SysUser` | sys\_user | 用户(username、password、real\_name、status 等) |

| `SysRole` | sys\_role | 角色(role\_name、role\_code) |

| `SysMenu` | sys\_menu | 菜单(menu\_name、path、icon、parent\_id、sort\_order) |

| `SysUserRole` | sys\_user\_role | 用户 - 角色关联 |

| `SysRoleMenu` | sys\_role\_menu | 角色 - 菜单关联 |

| `SysOperationLog` | sys\_operation\_log | 操作日志(预留) |

### 7. mapper — 数据访问层(6 个接口,MyBatis 注解 SQL)



| 接口 | 说明 |

| ----------------------- | ------------------------------- |

| `SysUserMapper` | 用户增删改查、按关键词分页、按状态统计、查角色 ID、更新密码 |

| `SysRoleMapper` | 角色 CRUD、查询角色列表 |

| `SysMenuMapper` | 菜单 CRUD、按角色查询菜单、查询全部菜单 |

| `SysUserRoleMapper` | 用户角色关系维护 |

| `SysRoleMenuMapper` | 角色菜单关系维护 |

| `SysOperationLogMapper` | 操作日志记录查询 |

> 使用注解式 SQL(

>

> `@Select`

>

> /

>

> `@Insert`

>

> 等),无需 XML 文件;

>

> `map-underscore-to-camel-case`

>

> 自动将

>

> `real_name`

>

> 映射为

>

> `realName`

>

> 。

### 8. service — 业务逻辑层(5 个服务)



| 服务 | 核心业务 |

| ------------------ | ------------------------ |

| `AuthService` | 登录校验、签发 JWT、获取用户信息 + 菜单树 |

| `UserService` | 用户 CRUD、分页搜索、重置密码、角色分配 |

| `RoleService` | 角色 CRUD、角色分配菜单 |

| `MenuService` | 菜单树组装(父子递归) |

| `DashboardService` | 首页统计汇总(数量统计 + 用户状态分布) |

### 9. util — 工具类(2 个)



| 类 | 作用 |

| -------------- | ------------------------------------------- |

| `JwtUtil` | 生成 / 解析 JWT(密钥来自 application.yml,有效期 24 小时) |

| `PasswordUtil` | SHA-256 加密密码、校验密码 |

### 10. resources/application.yml — 核心配置



```

server:

port: 8080 # 后端端口

spring:

datasource: # 数据库连接(127.0.0.1:3306/mgmt_system, root/root)

jackson:

date-format: yyyy-MM-dd HH:mm:ss # 时间序列化格式

jwt:

secret: mgmt-system-... # JWT 密钥(演示用, 生产需更换)

expire-hours: 24 # token 有效期 24 小时

```

## 四、pom.xml 依赖清单



| 依赖 | 版本 | 用途 |

| ------------------------------ | --------- | ----------------- |

| spring-boot-starter-web | 3.5.4 | Web 框架(内嵌 Tomcat) |

| spring-boot-starter-validation | 3.5.4 | 参数校验注解(@Valid) |

| mybatis-spring-boot-starter | 3.0.4 | MyBatis 持久层 |

| mysql-connector-j | 随 Boot 管理 | MySQL 驱动 |

| jjwt (api/impl/jackson) | 0.12.6 | JWT 生成与校验 |

| lombok | 1.18.48 | 简化实体类代码(@Data 等) |

**特别说明(JDK 25 兼容)**:pom 中已配置 `lombok.version=1.18.48` + maven-compiler-plugin `<proc>full</proc>`—— 因为 JDK 24+ 默认关闭注解处理,不配置会导致 Lombok 生成的方法缺失、编译报 "找不到符号"。这是本项目踩过并修复的坑。

## 五、一次登录请求的完整流转(示例)



```

1. POST /api/auth/login {username, password}

2. AuthController 接收 → 调 AuthService

3. AuthService: PasswordUtil 校验密码 → JwtUtil 签发 token → 查角色+菜单树

4. 返回 LoginResponse {token, user, menus}

5. 前端保存 token, 后续请求带 Authorization: Bearer <token>

6. 其他请求 → JwtInterceptor 校验 token → 通过 → 进入 Controller → Service → Mapper

```

## 六、启动与常用命令



```

# IDEA 运行: 右键 ManagementApplication → Run

# 或命令行:

mvn -s settings-mirror.xml clean package -DskipTests # 打包

java -jar target/system-backend-1.0.0.jar # 启动(8080)

```

接口完整说明见 `docs/API文档.md`。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询