微服务模块化项目结构

学校管理系统 - 微服务模块化项目结构

项目概述

本项目是一个基于 Spring Boot 3.x 和 Spring Cloud 的微服务架构的学校管理系统。

模块说明

1. school-common(公共模块)

  • 功能:提供公共依赖、工具类、配置、注解等
  • 包结构
    • com.school.common.* - 通用组件
    • com.school.common.annotation - 自定义注解
    • com.school.common.aspect - AOP切面
    • com.school.common.config - 配置类
    • com.school.common.exception - 异常处理
    • com.school.common.util - 工具类
    • com.school.common.dto - 数据传输对象
    • com.school.common.entity - 实体基类

2. school-auth(认证授权服务)

  • 功能:登录、注册、JWT生成与验证、验证码
  • 端口:8081
  • 数据表sys_user, sys_captcha, sys_login_log
  • API接口
    • POST /auth/login - 用户登录
    • POST /auth/register - 用户注册
    • GET /auth/captcha - 获取验证码
    • POST /auth/logout - 用户登出
    • POST /auth/refresh - 刷新Token

3. school-system(系统管理服务)

  • 功能:用户管理、角色管理、权限管理、部门管理、菜单管理
  • 端口:8082
  • 数据表sys_user, sys_role, sys_menu, sys_dept, sys_file
  • API接口
    • GET /sys/user/page - 分页查询用户
    • POST /sys/user - 新增用户
    • PUT /sys/user - 修改用户
    • DELETE /sys/user/{id} - 删除用户
    • GET /sys/role/list - 角色列表
    • GET /sys/menu/tree - 菜单树

4. school-edu(教学管理服务)

  • 功能:学生管理、教师管理、课程管理、班级管理、专业管理
  • 端口:8083
  • 数据表edu_student, edu_teacher, edu_course, edu_class, edu_major, edu_college
  • API接口
    • GET /edu/student/page - 分页查询学生
    • GET /edu/teacher/page - 分页查询教师
    • GET /edu/course/list - 课程列表
    • GET /edu/class/list - 班级列表

5. school-dorm(宿舍管理服务)

  • 功能:宿舍楼管理、宿舍房间管理、床位管理
  • 端口:8084
  • 数据表dormitory_building, dormitory_room, dormitory_bed
  • API接口
    • GET /dorm/building/page - 宿舍楼分页
    • GET /dorm/room/page - 宿舍房间分页
    • GET /dorm/bed/list - 床位列表

6. school-life(生活服务管理)

  • 功能:食堂管理、餐卡管理、菜品管理、窗口管理
  • 端口:8085
  • 数据表cafeteria, cafeteria_window, dish, meal_card
  • API接口
    • GET /life/cafeteria/page - 食堂分页
    • GET /life/dish/list - 菜品列表
    • GET /life/meal-card/{id} - 餐卡详情

7. school-api(API聚合服务)

  • 功能:提供统一的API入口,聚合各服务接口
  • 端口:8086
  • 作用:减少前端跨域请求,提供统一的API规范

8. school-gateway(API网关服务)

  • 功能:API网关、路由转发、鉴权、限流、熔断
  • 端口:8080
  • 作用
    • 统一入口
    • 路由转发到各个微服务
    • Token验证
    • 限流保护
    • 负载均衡

技术栈

核心框架

  • Spring Boot 3.5.9
  • Spring Cloud 2023.0.3
  • Spring Cloud Alibaba 2023.0.1.2

服务治理

  • Nacos - 服务注册与发现、配置中心
  • OpenFeign - 服务间调用
  • Gateway - API网关
  • Loadbalancer - 负载均衡

数据层

  • MyBatis Plus 3.5.7
  • MySQL 8.0
  • Druid - 连接池

缓存

  • Redis - 分布式缓存

安全认证

  • Spring Security
  • JWT (jjwt 0.12.5)

工具类

  • Hutool 5.8.26
  • Lombok 1.18.30
  • Apache Commons

文档

  • Knife4j 4.4.0
  • Springdoc OpenAPI 2.5.0

服务端口分配

服务 端口 说明
school-gateway 8080 API网关
school-auth 8081 认证授权
school-system 8082 系统管理
school-edu 8083 教学管理
school-dorm 8084 宿舍管理
school-life 8085 生活服务
school-api 8086 API聚合

迁移步骤

第一阶段:创建模块结构(已完成)

  1. 创建父POM文件,定义依赖管理
  2. 创建各子模块的POM文件
  3. 定义模块间的依赖关系

第二阶段:代码迁移(待执行)

  1. school-common 的代码迁移到 com.school.common 包下
  2. 将认证相关代码迁移到 school-auth
  3. 将系统管理相关代码迁移到 school-system
  4. 将教学管理相关代码迁移到 school-edu
  5. 将宿舍管理相关代码迁移到 school-dorm
  6. 将生活服务相关代码迁移到 school-life
  7. school-api 中创建Feign客户端接口
  8. 配置 school-gateway 的路由规则

第三阶段:配置迁移(待执行)

  1. 配置各服务的 application.yml
  2. 配置 Nacos 连接信息
  3. 配置数据库连接(分库或共享库)
  4. 配置 Redis 连接
  5. 配置 JWT 密钥

第四阶段:测试验证(待执行)

  1. 启动 Nacos 服务
  2. 启动 Redis 服务
  3. 启动各微服务
  4. 测试服务注册
  5. 测试服务间调用
  6. 测试网关路由

数据库设计

方案一:共享数据库(简化版)

所有微服务共享同一个数据库 school_management

方案二:分库分表(推荐)

每个微服务独立的数据库:

  • school_auth - 认证服务库
  • school_system - 系统管理库
  • school_edu - 教学管理库
  • school_dorm - 宿舍管理库
  • school_life - 生活服务库

调用关系

复制代码
前端请求 -> Gateway -> [鉴权] -> 微服务
                      |
                      v
                   Nacos
                      |
        +-------------+-------------+
        |             |             |
     school-auth  school-system  school-edu
        |             |             |
        |         school-dorm    school-life

开发规范

包命名规范

  • 公共模块:com.school.common.*
  • 认证服务:com.school.auth.*
  • 系统服务:com.school.system.*
  • 教学服务:com.school.edu.*
  • 宿舍服务:com.school.dorm.*
  • 生活服务:com.school.life.*
  • API服务:com.school.api.*
  • 网关服务:com.school.gateway.*

API接口规范

  • RESTful风格
  • 统一返回格式:Result<T>
  • 分页返回格式:PageResult<T>
  • 统一异常处理

配置管理

  • 公共配置:application.yml
  • 环境配置:application-dev.yml, application-prod.yml
  • Nacos配置中心:动态配置

启动顺序

  1. 启动 Nacos Server
  2. 启动 Redis
  3. 启动 MySQL
  4. 启动 school-gateway
  5. 启动 school-auth
  6. 启动其他业务服务(school-system, school-edu, school-dorm, school-life)
  7. 启动 school-api(可选)

部署架构

复制代码
┌─────────────┐
│   Nginx    │
└──────┬──────┘
       │
┌──────▼───────────────────────┐
│   school-gateway (8080)     │
│   - 路由转发                 │
│   - 鉴权                    │
│   - 限流                    │
└───┬────────┬────────┬────────┘
    │        │        │
┌───▼────┐ ┌─▼────┐ ┌─▼────┐
│ auth   │ │system│ │ edu  │
└────────┘ └──────┘ └──────┘
    │         │        │
┌───▼─────────▼────────▼──────┐
│    Nacos (8848)           │
│    - 服务注册               │
│    - 配置中心               │
└────────────────────────────┘
    │
┌───▼─────────┐
│   Redis     │
└─────────────┘

待办事项

  • 创建各模块的目录结构
  • 迁移公共模块代码
  • 迁移认证服务代码
  • 迁移系统管理服务代码
  • 迁移教学管理服务代码
  • 迁移宿舍管理服务代码
  • 迁移生活服务服务代码
  • 创建 Feign 客户端接口
  • 配置 Gateway 路由规则
  • 编写各服务配置文件
  • 数据库分库设计
  • 编写单元测试
  • 编写集成测试
相关推荐
烤麻辣烫2 小时前
java进阶--刷题与详解-1
java·开发语言·学习·intellij-idea
cypking2 小时前
一、Mac 下 JDK + Maven 安装配置文档(Bash 终端 / Source 生效)
java·macos·maven
七夜zippoe2 小时前
分布式事务解决方案 Seata AT模式深度解析
java·sql·seata·at·xa·undo log
计算机毕设指导62 小时前
基于微信小程序的社区医疗服务管理系统【源码文末联系】
java·spring boot·微信小程序·小程序·tomcat·maven·intellij-idea
Java天梯之路2 小时前
Spring Boot 钩子全集实战(六):SpringApplicationRunListener.contextPrepared()详解
java·spring boot·后端
小小仙。2 小时前
IT自学第十八天
java·开发语言·算法
我命由我123452 小时前
Android 开发 - FragmentPagerAdapter、Pair、ClipboardManager、PopupWindow
android·java·java-ee·kotlin·android studio·android-studio·android runtime
扶苏-su2 小时前
Java--打印流
java·开发语言
Kevin-anycode2 小时前
如何将自己的应用上传文件功能对接到群辉的NAS上
java·unix