This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
筱锋通用公共仓库 (general-utils) - 多模块基础工具库,为 Spring Boot 应用提供统一的工具类、配置管理和增强功能。
- 当前版本: 2.0.0-beta1
- Java 版本: 17
- 构建工具: Maven
- 许可证: MIT
本项目采用分层模块设计,依赖关系清晰:
bamboo-base (纯基础)
↓
├─→ bamboo-mvc (Spring MVC 适配)
├─→ bamboo-webflux (Spring WebFlux 适配)
├─→ bamboo-triple (Dubbo Triple 协议)
└─→ bamboo-notify (通知服务)
定位: 零 Web 框架依赖的纯 Java 工具库
核心功能:
BaseResponse<E>- 通用响应数据模型(支持 context 链路追踪和 duration 性能监控)ErrorCode- 统一错误码枚举- 异常类体系:
BusinessException,RequestException等 - 工具类:
SnowflakeUtil,GeneSnowflakeUtil,EncryptUtil,UuidUtil,ConvertUtil,PasswordUtil,IpUtil等 - ID 生成器:
SnowflakeIdGenerator,UuidV7Generator等 - 常量类:
StringConstant,RegexConstant - Spring Boot 自动配置支持(通过
META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports)
重要: 所有依赖都是 provided 作用域,由用户项目提供实际依赖。
定位: Spring MVC 同步环境的增强工具
核心功能:
ResultUtil- 返回ResponseEntity<BaseResponse<T>>,自动注入 context 和 durationContextHolder- 基于ThreadLocal的上下文管理HeaderUtil- HttpServletRequest 工具ExceptionHandler- 全局异常处理Filter- 请求过滤器AOP切面 - 日志、权限等
重要: 使用 ThreadLocal 管理请求上下文,适用于传统的阻塞式 Servlet 容器。
定位: Spring WebFlux 响应式环境的增强工具
核心功能:
ResultUtil- 返回Mono<ResponseEntity<BaseResponse<T>>>,响应式风格ContextHolder- 基于Reactor Context的上下文管理WebExceptionHandler- 响应式全局异常处理WebFilter- 响应式过滤器
重要: 使用 Reactor Context 管理请求上下文,完全异步非阻塞,不依赖 ThreadLocal。
定位: Dubbo Triple 协议增强
定位: 通知服务基础结构
# 清理并编译整个项目
mvn clean compile
# 运行所有测试
mvn test
# 运行单个模块测试
mvn test -pl bamboo-base
# 运行单个测试类
mvn test -Dtest=SnowflakeUtilTest -pl bamboo-base
# 打包(跳过测试)
mvn clean package -DskipTests
# 安装到本地仓库
mvn clean install -DskipTests# 完整的发布流程(清理、验证、签名、部署)
mvn clean deploy -P release
# 只构建不部署(检查 GPG 签名)
mvn clean verify注意: 发布需要配置 GPG 签名和 Sonatype 凭证。
-
✅ 调用内部方法或继承的方法时: 必须使用
this.this.processData(); // 正确
-
❌ 访问成员变量时: 禁止使用
this.private String name; System.out.println(name); // 正确 System.out.println(this.name); // 错误!不要这样写
在性能影响可忽略的情况下,优先使用 Optional 进行优雅判空,增强可读性:
Optional.ofNullable(data)
.map(Item::getValue)
.orElse(defaultValue);- 追求完美、优雅且高可读性的代码风格
- 所有公共 API 必须有完整的 JavaDoc 注释
- 使用
@NotNull,@Nullable,@Contract等注解增强代码可读性 - 异常处理要具体,避免捕获过于宽泛的异常
- 在启动新测试服务前,先检查端口是否占用(假设用户正在运行则直接测试)
- BugFix 修复后,必须执行最终的代码逻辑检查或编译检查,确保无误
项目使用 Spring Boot 3.x 的自动配置机制:
-
配置文件位置:
META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports -
自动配置类:
bamboo-base:BaseCoreAutoConfiguration,CoreDatabaseAutoConfigurationbamboo-mvc: 通过 imports 文件导入bamboo-webflux: 通过 imports 文件导入
-
配置属性:
utility.base.snowflake.*- 雪花 ID 生成器配置utility.base.*- 其他基础配置
本项目针对两种编程模型提供了不同的实现:
| 特性 | bamboo-mvc | bamboo-webflux |
|---|---|---|
| 返回类型 | ResponseEntity<BaseResponse<T>> |
Mono<ResponseEntity<BaseResponse<T>>> |
| 上下文管理 | ThreadLocal |
Reactor Context |
| 异常处理 | @ControllerAdvice |
@WebExceptionHandler |
| 过滤器 | Filter |
WebFilter |
| 编程模型 | 阻塞式,命令式 | 非阻塞,响应式 |
重要: 当为用户项目提供支持时,根据项目类型(MVC 或 WebFlux)选择对应的模块。
所有模块的外部依赖都设置为 provided 作用域:
- 避免版本冲突
- 减小最终产物体积
- 由用户项目统一管理依赖版本
例外: uuid-creator 是唯一 compile 作用域的依赖(用于 UUID v7 生成)。
- GitHub Actions:
.github/workflows/deploy_release.yaml - 触发条件: 推送到
master分支 - 流程: 检出代码 → 设置 JDK 17 → Maven 构建 → 创建 GitHub Release
Jenkins: 支持 Jenkinsfile 部署流程。
- 版本号格式:
major.minor.patch-beta1 - 主分支:
master - 开发分支:
feature/* - 所有模块共享同一个版本号(在父 POM 中定义)
- Snowflake ID 配置: 使用前需要配置数据中心 ID 和机器 ID(通过
UtilityBaseProperties) - MyBatis-Plus 集成: 提供了自定义的
IdentifierGenerator实现 - 异常处理: 区分
BusinessException(业务异常)和RequestException(请求异常) - 日志转换:
MethodTypeConverter自定义 Logback 日志格式 - GPG 签名: 发布到中央仓库需要 GPG 签名配置
- 在
bamboo-base的utility包下创建 - 确保是纯 Java 实现,无 Web 框架依赖
- 添加完整的 JavaDoc 和单元测试
bamboo-mvc: 使用ThreadLocal管理上下文,返回ResponseEntitybamboo-webflux: 使用Reactor Context管理上下文,返回Mono- 保持功能一致性,API 尽可能相似
- 修改对应的
AutoConfiguration类 - 更新
META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports文件 - 测试自动配置是否生效(使用
@SpringBootTest)