☁️ ThinkBootCloud

轻量级微服务开发框架
专为 C 端客户端场景设计,开箱即用,快速开发业务逻辑

Spring Boot 3.2.5 Spring Cloud 2023 JDK 17+ MIT License

框架概述

ThinkBootCloud 是一款基于 Spring Cloud Alibaba + Spring Boot 3 的轻量级微服务开发框架。与若依等后台管理系统不同,本框架专注于 C 端客户端场景(移动端 App、Web 前端、小程序等),去除了复杂的角色权限体系,仅保留基础的 Token 验证。

设计理念

📦

开箱即用

引入依赖,简单配置即可开始开发

🪶

轻量灵活

模块化设计,按需引入,不臃肿

📐

约定优于配置

提供合理默认值,减少配置工作量

🔒

安全优先

默认所有接口需要认证,明确标记才放行

技术栈

组件版本说明
Spring Boot3.2.5核心框架
Spring Cloud2023.0.1微服务框架
Spring Cloud Alibaba2023.0.1.0阿里微服务组件
Nacos2.x注册中心 + 配置中心
MyBatis-Plus3.5.6ORM 框架
Redis (Redisson)3.27.2缓存 + 分布式锁
RabbitMQ3.12.x消息队列
RocketMQ5.3.x消息队列
JWT (JJWT)0.12.5Token 认证
Gateway4.1.xAPI 网关
Sentinel2023.0.1.0限流熔断

模块结构

模块说明核心功能
think-boot-common公共基础模块统一响应 R、分页支持、业务异常、全局异常处理
think-boot-core核心配置模块CORS 配置、Jackson 时间序列化、请求日志
think-boot-auth认证模块JWT Token、@IgnoreAuth 注解、拦截器、UserContext
think-boot-feign服务通信模块OpenFeign、Token 自动传递、全局日志
think-boot-sentinel限流熔断模块Sentinel 集成、自定义限流响应、Nacos 规则源
think-boot-gatewayAPI 网关模块网关路由、Token 验证、CORS、全局错误处理
think-boot-nacos服务注册模块Nacos 服务发现、动态配置
think-boot-mybatis数据库模块MyBatis-Plus、BaseEntity、分页、自动填充
think-boot-redis缓存模块RedisTemplate 封装、Redisson 分布式锁
think-boot-file文件上传模块本地存储、阿里云 OSS
think-boot-codegen代码生成器模块基于数据库表自动生成 CRUD 代码

快速开始

环境要求

第一步:编译安装框架

# GitHub git clone https://github.com/hongxinge/ThinkBootCloud.git # Gitee git clone https://gitee.com/hongxinge/think-boot-cloud.git cd think-boot-cloud mvn clean install -DskipTests

第二步:引入依赖

<parent> <groupId>com.thinkboot</groupId> <artifactId>think-boot-cloud</artifactId> <version>1.0.0</version> </parent> <dependencies> <dependency> <groupId>com.thinkboot</groupId> <artifactId>think-boot-common</artifactId> </dependency> <dependency> <groupId>com.thinkboot</groupId> <artifactId>think-boot-auth</artifactId> </dependency> <!-- 按需引入其他模块 --> </dependencies>

认证机制

框架采用网关验证 + 内部信任的设计:

客户端请求 → 网关(验证Token + 注入X-User-Id) → 服务A(信任X-User-Id) ✅ 唯一安全验证点 ✅ 直接使用

放行条件

# 方式一:配置免认证路径 thinkboot: auth: jwt: skip-paths: - /api/auth/login - /api/public/** # 方式二:@IgnoreAuth 注解 @IgnoreAuth @PostMapping("/login") public R<LoginResponse> login(@RequestBody LoginRequest request) { ... }

获取当前登录用户

// 方式1:UserContext(推荐) String userId = UserContext.getCurrentUserId(); // 方式2:@CurrentUserId 注解 @GetMapping("/me") public R<User> getCurrentUser(@CurrentUserId String userId) { ... }

OpenFeign 服务间调用

@FeignClient(name = "user-service", path = "/api/users") public interface UserFeignClient { @GetMapping("/{id}") R<User> getUserById(@PathVariable Long id); } // Token 自动传递,无需手动设置 Header

Sentinel 限流熔断

@SentinelResource(value = "getUserById", blockHandler = "handleBlock") @GetMapping("/{id}") public R<User> getById(@PathVariable Long id) { return R.success(userService.getById(id)); } public R<User> handleBlock(Long id, BlockException ex) { return R.error(429, "请求过于频繁,请稍后再试"); }

Redis 缓存使用

// 基本操作 RedisUtils.set("user:1", userObject, 30, TimeUnit.MINUTES); User user = (User) RedisUtils.get("user:1"); // 分布式锁(函数式 API) String result = DistributedLock.executeWithLock( "lock:order:create", () -> { return "success"; }, 3, 10, TimeUnit.SECONDS ); // Spring Cache 注解 @Cacheable(value = "product", key = "#id") public Product getById(Long id) { ... }

消息队列

RabbitMQ

// 发送消息 @Autowired private RabbitMessageSender messageSender; messageSender.send("order.created", order); messageSender.sendDelay("order.timeout", order, 30 * 60 * 1000); // 消费消息 @RabbitListener(queues = "thinkboot.order.created") public void handleOrderCreated(Order order) { ... }

RocketMQ

// 发送消息 @Autowired private RocketMessageSender sender; sender.send("order-topic", order); sender.sendOrderly("order-topic", order, String.valueOf(order.getId())); sender.sendDelay("delay-topic", order, 3); // 延迟级别 // 消费消息 @RocketMQMessageListener(topic = "order-topic", consumerGroup = "order-consumer-group") public class OrderMessageConsumer implements RocketMQListener<Order> { ... }

代码生成器

ThinkBootCodeGenerator generator = new ThinkBootCodeGenerator(); generator.url("jdbc:mysql://localhost:3306/your_db") .username("root").password("your_password") .tableName("tb_user", "tb_order") .moduleName("system") .author("YourName") .useBaseEntity(true) .ignoreTablePrefix("tb_") .generate();

部署模板

框架提供开箱即用的部署模板:

模板说明
Docker Compose一键部署包含 Nacos、MySQL、Redis、RabbitMQ、Gateway
GitHub ActionsCI/CD 配置模板
GitLab CICI/CD 配置模板
Nginx 反向代理网关 Nginx 配置模板

常见问题

JWT 密钥怎么生成?

# 在线生成 访问 https://www.base64encode.org/,输入至少32位字符串,点击编码 # 代码生成 String key = SecureUtil.generateKey("HmacSHA256").toString(); String base64Key = Base64.encode(key.getBytes());

Gateway 网关如何配置路由?

spring: cloud: gateway: routes: - id: user-service uri: lb://user-service predicates: - Path=/api/users/**

微服务之间如何通信?

推荐使用 OpenFeign(已内置),定义 @FeignClient 接口,注入直接调用,Token 自动传递。

仓库地址

平台地址
GitHubhttps://github.com/hongxinge/ThinkBootCloud
Gitee(国内镜像)https://gitee.com/hongxinge/think-boot-cloud
GitHub Issueshttps://github.com/hongxinge/ThinkBootCloud/issues