# common-spring-boot-starter **Repository Path**: sunxutao54/common-spring-boot-starter ## Basic Information - **Project Name**: common-spring-boot-starter - **Description**: 一个基于SpringBoot实现的公共组件 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 1 - **Created**: 2025-07-21 - **Last Updated**: 2026-01-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # common-spring-boot-starter 这是一个通用的 Spring Boot Starter 项目,旨在为开发者提供一系列便捷的功能模块,以简化 Spring Boot 应用程序的开发流程。该项目包含多个模块,涵盖分页、异常处理、工具类、MyBatis 增强、雪花 ID 生成、线程池管理、敏感数据处理以及全局异常拦截等功能。 ## 模块介绍 ### 1. common-spring-boot-starter-core(核心基础模块) **核心能力**:提供应用开发的基础支撑组件,实现通用功能的标准化封装 - 统一异常处理 - 定义基础异常类 `AxeException` 及业务子类体系 - 全局异常拦截器自动捕获未处理异常,统一封装响应格式 - 工具类集合 - `AssertUtils`:增强断言工具,简化参数校验逻辑 - `CollectionUtils`:集合操作增强,提供批量处理、空安全判断等方法 - `DateUtils`:日期时间格式化、转换、计算等工具方法 - `StringUtils`:字符串脱敏、校验、格式化等增强功能 - 响应标准化 - 统一接口返回格式 `ResultFull`,包含状态码、消息及数据字段 - 自动包装响应结果,减少前后端交互格式适配成本 **适用场景**:所有 Spring Boot 应用的基础能力集成,尤其适合企业级项目的标准化开发。 ### 2. common-spring-boot-starter-mybatis(数据访问增强模块) **核心能力**:基于 MyBatis Plus 扩展,优化数据访问层实现 - 通用数据操作 - 通用接口 `AxeBaseMapper` 封装 CRUD 基础操作 - 服务实现类 `AxeServiceImpl` 提供批量插入优化,支持大数据量高效写入 - 查询增强 - 集成 PageHelper 分页插件,支持物理分页与复杂查询场景 - 自动处理分页参数,简化分页查询代码 - 并发控制 - 内置乐观锁插件,通过版本号机制解决并发更新冲突 - 自动拦截更新操作,实现版本号递增与冲突检测 **适用场景**:基于 MyBatis Plus 的数据访问层开发,需标准化数据库操作的项目。 ### 3.common-spring-boot-starter-security(数据安全模块) **核心能力**:提供敏感数据处理机制,保障数据隐私与存储安全 - 敏感信息脱敏 - `@Sensitive`注解标记需脱敏字段,支持多种预设类型: - 手机号(中间 4 位隐藏)、邮箱(域名前字符部分隐藏) - 身份证号(保留首尾字符)、银行卡号(保留后 4 位) - 序列化时自动脱敏,不影响原始数据存储 - 字段加密存储 - `@Encrypt`注解实现字段级加密,支持算法: - Argon2:适用于密码存储的现代加密算法 - BCrypt:工业级密码哈希算法,自带盐值 - 自动完成加密存储与解密读取,透明化加密逻辑 **适用场景**:对用户隐私数据(如手机号、身份证)和敏感配置(如密码)有保护需求的应用。 ### 4.common-spring-boot-starter-snowflake(分布式 ID 模块) **核心能力**:基于雪花算法的分布式唯一 ID 生成方案 - 高可用 ID 生成器 - `SnowflakeIdGenerator` 线程安全实现,支持每秒生成百万级 ID - 可配置 Worker ID 与 Datacenter ID,适配多节点部署 - 自动填充机制 - `@SnowflakeId` 注解标记实体主键字段 - `SnowflakeIdInterceptor` 拦截器在数据插入前自动生成并填充 ID - 支持未手动赋值时自动填充,避免业务代码侵入 **适用场景**:分布式系统、微服务架构中需保证主键全局唯一的场景,如订单、用户等核心表。 ### 5. common-spring-boot-starter-thread(线程池管理模块) **核心能力**:提供可配置的线程池解决方案,优化异步任务执行 - 灵活配置 - `ThreadPoolConfig`支持核心参数自定义: - 核心线程数、最大线程数、队列容量 - 线程空闲时间、线程名称前缀 - 支持通过配置文件动态调整参数,无需代码变更 - 增强容错 - 自定义拒绝策略 `CallerFallbackPolicy`,支持任务重试机制 - 可配置重试次数与重试队列容量,提升任务执行成功率 **适用场景**:高并发场景下的异步任务处理,如消息推送、数据同步、批量处理等。 ## 快速开始 ### 添加依赖 在你的 Spring Boot 项目的 `pom.xml` 中添加以下依赖: ```xml com.axe common-spring-boot-starter-all 1.0.0 ``` > 如需单独引入模块,可替换 artifactId 为具体模块名(如 `common-spring-boot-starter-core`) ### 配置 根据需要在 `application.yml` 中添加相应的配置: ```yaml axe: # 雪花算法配置 snowflake: worker-id: 1 # 节点 ID(0-31) datacenter-id: 1 # 数据中心 ID(0-31) # 线程池配置 thread-pool: core-size: 5 # 核心线程数 max-size: 10 # 最大线程数 queue-capacity: 50 # 任务队列容量 keep-alive-seconds: 60 # 空闲线程存活时间 thread-name-prefix: axe-task- # 线程名称前缀 await-termination-seconds: 30 # 线程池关闭等待时间 wait-for-tasks: true # 是否等待任务完成后关闭 retry-queue-capacity: 50 # 重试队列容量 max-retries: 3 # 最大重试次数 ``` ### 使用示例 #### 异常处理 ```java @RestController public class ExampleController { @GetMapping("/test/exception") public ResultFull testException() { // 直接抛出异常,全局拦截器自动处理 AssertUtils.isTrue(false, "参数校验失败"); // 或手动抛出业务异常 throw new AxeException("业务处理异常", 5001); } } ``` #### 敏感数据脱敏 ```java public class UserInfo { private Long id; // 手机号脱敏(示例:138****1234) @Sensitive(type = SensitiveType.PHONE) private String phone; // Getter/Setter 省略 } ``` #### 数据加密 ```java public class UserInfo { private Long id; // 密码加密存储(使用 Argon2 算法) @Encrypt(type = EncryptType.ARGON2_ID) private String loginPwd; // Getter/Setter 省略 } ``` #### 分布式 ID 自动填充 ```java @TableName("t_user") public class User { // 插入时自动生成雪花 ID @SnowflakeId private Long id; private String username; // 其他字段省略 } ``` #### 线程池使用 ```java @Service public class AsyncService { // 注入框架线程池 @Resource private ThreadPoolTaskExecutor axeTaskExecutor; public void executeAsyncTask() { // 提交异步任务 axeTaskExecutor.execute(() -> { // 执行耗时操作(如文件处理、网络请求) log.info("异步任务执行中..."); }); } } ``` ## 贡献指南 欢迎贡献代码和改进文档。请遵循以下步骤: 1. Fork 本仓库。 2. 创建新分支 (`git checkout -b feature/new-feature`)。 3. 提交更改 (`git commit -am 'Add new feature'`)。 4. 推送分支 (`git push origin feature/new-feature`)。 5. 创建 Pull Request。 ## 许可证 本项目使用 MIT 许可证。详情请查看 [LICENSE](LICENSE) 文件。