GitHub - ankewk/java-spring-book-manager

基于Spring Cloud + Dubbo的图书管理系统

这是一个基于Spring Cloud + Dubbo微服务架构的图书管理系统,包含用户管理、图书管理、借阅管理等核心功能。系统采用Spring Cloud进行服务注册发现和配置管理,使用Dubbo进行高性能的RPC通信。

系统架构

微服务组件

  1. Eureka Server (注册中心) - 端口: 8761

    • 服务注册与发现
    • 服务健康检查
  2. Config Server (配置中心) - 端口: 8888

    • 集中配置管理
    • 配置动态刷新
  3. Nacos Server (注册中心) - 端口: 8848

    • Dubbo服务注册与发现
    • 配置管理
  4. Gateway Service (API网关) - 端口: 8080

    • 统一入口
    • 路由转发
    • 负载均衡
  5. User Service (用户服务) - 端口: 8081

    • 用户管理
    • 用户信息CRUD
  6. Book Service (图书服务) - 端口: 8082

    • 图书管理
    • 库存管理
    • 图书搜索
    • 提供Dubbo RPC服务
  7. Borrow Service (借阅服务) - 端口: 8083

    • 借阅管理
    • 归还管理
    • 逾期处理
    • 通过Dubbo调用图书服务

技术栈

  • Spring Boot 2.7.18
  • Spring Cloud 2021.0.8
  • Spring Cloud Netflix Eureka
  • Spring Cloud Gateway
  • Spring Cloud Config
  • Spring Cloud OpenFeign
  • Apache Dubbo 3.2.0
  • Spring Cloud Alibaba Nacos
  • MyBatis Plus 3.5.3.1
  • H2 Database
  • Lombok

快速开始

环境要求

  • JDK 11+
  • Maven 3.6+

启动顺序

  1. 启动Eureka注册中心

    cd eureka-server
    mvn spring-boot:run

    访问: http://localhost:8761

  2. 启动配置中心

    cd config-server
    mvn spring-boot:run
  3. 启动Nacos注册中心

    cd nacos-server
    mvn spring-boot:run

    访问: http://localhost:8848/nacos

  4. 启动用户服务

    cd user-service
    mvn spring-boot:run
  5. 启动图书服务

    cd book-service
    mvn spring-boot:run
  6. 启动借阅服务

    cd borrow-service
    mvn spring-boot:run
  7. 启动API网关

    cd gateway-service
    mvn spring-boot:run

API接口

用户管理

  • GET /api/users - 获取所有用户
  • GET /api/users/{id} - 获取指定用户
  • POST /api/users - 创建用户
  • PUT /api/users/{id} - 更新用户
  • DELETE /api/users/{id} - 删除用户

图书管理

  • GET /api/books - 获取所有图书
  • GET /api/books/{id} - 获取指定图书
  • GET /api/books/search?keyword=xxx - 搜索图书
  • GET /api/books/available - 获取可借图书
  • POST /api/books - 添加图书
  • PUT /api/books/{id} - 更新图书
  • DELETE /api/books/{id} - 删除图书

借阅管理

  • GET /api/borrows - 获取所有借阅记录
  • GET /api/borrows/{id} - 获取指定借阅记录
  • GET /api/borrows/user/{userId} - 获取用户借阅记录
  • GET /api/borrows/overdue - 获取逾期记录
  • POST /api/borrows/borrow?userId=1&bookId=1&borrowDays=30 - 借书
  • POST /api/borrows/{id}/return - 还书

数据库访问

各服务都使用H2内存数据库,可以通过以下URL访问控制台:

数据库连接信息:

  • JDBC URL: jdbc:h2:mem:xxxdb
  • 用户名: sa
  • 密码: (空)

服务注册中心

功能特性

用户管理

  • 用户注册、登录、信息管理
  • 用户角色管理(管理员、图书管理员、读者)
  • 用户信息验证

图书管理

  • 图书信息管理
  • 图书分类管理
  • 库存管理
  • 图书搜索功能

借阅管理

  • 图书借阅
  • 图书归还
  • 借阅历史查询
  • 逾期管理
  • 借阅数量限制

系统特性

  • 微服务架构
  • 服务注册与发现
  • 配置中心
  • API网关
  • 负载均衡
  • 服务间通信
  • Dubbo RPC通信
  • 高性能服务调用
  • MyBatis Plus数据访问
  • 自动字段填充

项目结构

book-manager-cloud/
├── eureka-server/          # 注册中心
├── config-server/          # 配置中心
├── nacos-server/           # Nacos注册中心
├── gateway-service/        # API网关
├── user-service/          # 用户服务
├── book-service/          # 图书服务 (提供Dubbo服务)
├── borrow-service/        # 借阅服务 (消费Dubbo服务)
└── pom.xml               # 父项目配置

扩展功能

可以根据需要添加以下功能:

  1. 认证授权 - 集成Spring Security
  2. 消息队列 - 集成RabbitMQ或Kafka
  3. 分布式事务 - 集成Seata
  4. 监控告警 - 集成Spring Boot Admin
  5. 链路追踪 - 集成Sleuth和Zipkin
  6. 缓存 - 集成Redis
  7. 数据库 - 替换为MySQL或PostgreSQL

注意事项

  1. 确保所有服务按顺序启动
  2. 检查Eureka控制台确认服务注册成功
  3. 通过网关访问API接口
  4. 注意服务间的依赖关系