AutoScan 是轻量级 Spring Boot Starter,解决跨包扫描痛点
- 🚀 自动扫描基础包,配置一次,全局生效
- 🎯 业务包零配置,利用 @SpringBootApplication 默认扫描机制
- 🏗️ 多层基础设施支持,业务项目也可作为其他项目的基础设施
- 🔧 非侵入式设计,不改变现有代码结构
- 📊 开发者友好,提供详细的扫描日志便于调试
- ⚡ 轻量级,无额外依赖,与 Spring Boot 3.x/4.x 完美兼容
🎉 AutoScan v1.1.0 发布新特性
1. 通配符包支持 🌟
功能描述:支持在包路径中使用通配符,大大简化配置。
支持的通配符:
*- 单级通配符,匹配一级包路径**- 多级通配符,匹配所有子包
使用示例:
# v1.0.0 - 需要逐个列出所有包
auto-scan:
base-packages:
- org.example.boot
- org.example.common
- org.example.security
- org.example.framework
# v1.1.0 - 使用通配符简化配置
auto-scan:
base-packages:
- org.example.* # 匹配 org.example 下所有一级包
- com.company.** # 匹配 com.company 下所有包
优势:
- ✅ 配置更简洁,减少出错
- ✅ 新增包无需修改配置
- ✅ 提高可维护性
2. 排除扫描功能 🚫
功能描述:支持排除特定的包和类,精确控制扫描范围。
配置项:
exclude-packages- 排除的包路径列表exclude-classes- 排除的类全限定名列表
使用示例:
auto-scan:
base-packages:
- org.example
exclude-packages:
- org.example.test # 排除测试包
- org.example.example # 排除示例包
exclude-classes:
- org.example.demo.DemoClass # 排除特定类
- org.example.temp.TempComponent # 排除临时组件
使用场景:
- ✅ 排除测试代码
- ✅ 排除示例和演示代码
- ✅ 排除遗留和废弃代码
- ✅ 排除临时和实验性代码
3. 自定义注解扫描 🎨
功能描述:支持配置自定义注解进行组件扫描,扩展扫描能力。
配置项:
include-annotations- 要包含的注解全限定名列表
使用示例:
auto-scan:
base-packages:
- org.example
include-annotations:
- org.springframework.stereotype.Service
- org.springframework.stereotype.Controller
- org.example.annotation.CustomComponent # 自定义注解
创建自定义注解:
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Component // 重要:必须用 @Component 注解
public @interface CustomComponent {
String value() default "";
}
使用自定义注解:
@CustomComponent
public class CustomService {
// 业务逻辑
}
优势:
- ✅ 扩展扫描能力
- ✅ 支持自定义组件分类
- ✅ 灵活的组件标记机制
📚 文档增强
多语言文档支持
- ✅ 中文文档完整更新
- ✅ 英文文档完整创建
- ✅ 语言选择页面
- ✅ 浏览器语言自动检测
- ✅ 用户语言偏好记忆
文档缓存解决方案
- ✅ 版本号+时间戳组合缓存控制
- ✅ 外部配置文件
version.js - ✅ GitHub Actions 自动更新版本
- ✅ 动态加载防缓存
- ✅ 完整的掘金技术文章
文档结构优化
docs/
├── index.html # 语言选择页面
├── zh/ # 中文文档
│ ├── index.html
│ ├── version.js
│ └── ...
└── en/ # 英文文档
├── index.html
├── version.js
└── ...
� 技术改进
核心实现
通配符解析:
- 使用
PathMatchingResourcePatternResolver解析通配符路径 - 支持
*单级通配符和**多级通配符 - 自动去重,避免重复扫描
排除过滤器:
- 使用
TypeFilter实现包级和类级排除 - 支持同时配置多个排除规则
- 精确控制扫描范围
注解过滤器:
- 使用
AnnotationTypeFilter实现自定义注解扫描 - 支持 Spring 内置注解和自定义注解
- 灵活组合多个注解
配置属性增强
新增配置项:
| 配置项 | 类型 | 默认值 | 说明 |
|---|---|---|---|
exclude-packages | List | [] | 要排除的包路径列表 |
exclude-classes | List | [] | 要排除的类全限定名列表 |
include-annotations | List | [] | 要包含的注解全限定名列表 |
📊 性能优化
扫描效率
- ✅ 通配符解析优化,减少不必要的扫描
- ✅ 排除过滤器提前应用,减少扫描范围
- ✅ 注解过滤器按需配置,避免过度扫描
- ✅ 使用
LinkedHashSet存储包路径,确保去重和顺序
内存使用
- ✅ 按需加载,只加载必要的类
- ✅ 合理的数据结构
- ✅ 无额外依赖
🧪 测试覆盖
单元测试
- ✅ 通配符解析测试
- ✅ 排除过滤器测试
- ✅ 注解过滤器测试
- ✅ 配置绑定测试
- ✅ 完整流程集成测试
测试用例
| 测试场景 | 状态 |
|---|---|
单级通配符 * | ✅ 通过 |
多级通配符 ** | ✅ 通过 |
| 混合通配符 | ✅ 通过 |
| 排除单个包 | ✅ 通过 |
| 排除多个包 | ✅ 通过 |
| 排除单个类 | ✅ 通过 |
| 排除多个类 | ✅ 通过 |
| 自定义注解扫描 | ✅ 通过 |
| 组合配置 | ✅ 通过 |
📖 更新文档
新增文档
| 文档 | 说明 |
|---|---|
docs/zh/features.md | 更新核心功能文档,新增通配符、排除扫描、自定义注解章节 |
docs/zh/configuration.md | 更新配置指南,新增配置项说明 |
docs/zh/use-cases.md | 更新使用场景,新增通配符、排除扫描、自定义注解场景 |
docs/zh/best-practices.md | 更新最佳实践,新增新特性最佳实践 |
docs/zh/faq.md | 更新常见问题,新增新特性相关问题 |
docs/en/* | 完整的英文文档 |
docs/index.html | 语言选择页面 |
� 升级指南
从 v1.0.0 升级到 v1.1.0
完全向后兼容,无需修改现有配置!
步骤 1:更新依赖版本
<dependency>
<groupId>org.itrys</groupId>
<artifactId>autoscan-spring-boot-starter</artifactId>
<version>1.1.0</version>
</dependency>
步骤 2:(可选)使用新特性
# 可选:使用通配符简化配置
auto-scan:
base-packages:
- org.example.*
- com.company.**
dev-mode: true
就这么简单!所有现有配置将继续工作。
💡 使用建议
推荐配置
auto-scan:
# 使用通配符简化配置
base-packages:
- org.example.*
- com.company.**
# 排除不必要的代码
exclude-packages:
- org.example.test
- org.example.example
# 开发模式开启日志
dev-mode: true
新特性采用顺序
- 先使用通配符 - 简化现有配置,风险低
- 再使用排除扫描 - 精确控制扫描范围
- 最后使用自定义注解 - 扩展扫描能力
📝 变更记录
| 类型 | 说明 |
|---|---|
| feat | 新增通配符包支持 |
| feat | 新增排除扫描功能 |
| feat | 新增自定义注解扫描 |
| docs | 更新中文文档 |
| docs | 新增英文文档 |
| docs | 新增语言选择页面 |
| docs | 实现文档缓存解决方案 |
| test | 新增单元测试和集成测试 |
🎯 未来规划
v1.2.0 计划
- 📦 @Import 兼容性 - 在配置中直接导入特定类
- ⚡ 懒加载初始化 - 支持懒加载 Bean 初始化
v1.3.0 计划
- 🎯 高级过滤 - 基于正则表达式的包过滤
- 🔄 条件配置 - 基于环境的扫描
长期愿景
- 🔌 插件系统 - 可扩展的扫描策略
- 📊 监控仪表板 - 可视化扫描分析
- 🌐 Spring Cloud 集成 - 微服务优化
� 反馈与支持
如果在使用过程中遇到任何问题或有任何建议,欢迎通过以下方式联系我们:
- GitHub Issues: github.com/itrys/autos…
- Gitee Issues: gitee.com/itrys/autos…
- Email: contact@itrys.org
- 文档: autoscan.itrys.org
📄 许可证
AutoScan 使用 Apache License 2.0 开源许可证。