🎉 新特性
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. 排除扫描功能 🚫
功能描述:支持排除特定的包和类,精确控制扫描范围。
配置项:
使用示例:
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. 自定义注解扫描 🎨
功能描述:支持配置自定义注解进行组件扫描,扩展扫描能力。
配置项:
- </span><span style="color:#98c379">include-annotations</span><span style="color:#e5c07b"> - 要包含的注解全限定名列表
使用示例:
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 {
// 业务逻辑
}
优势:
-
✅ 扩展扫描能力
-
✅ 支持自定义组件分类
-
✅ 灵活的组件标记机制
� 技术改进
核心实现
通配符解析:
-
使用 </span><span style="color:#98c379">PathMatchingResourcePatternResolver</span><span style="color:#e5c07b"> 解析通配符路径
-
支持 </span><span style="color:#98c379">*</span><span style="color:#e5c07b"> 单级通配符和 </span><span style="color:#98c379">**</span><span style="color:#e5c07b"> 多级通配符
-
自动去重,避免重复扫描
排除过滤器:
注解过滤器:
配置属性增强
新增配置项:
* 配置项 * 类型 * 默认值 * 说明 *
*--------*------*--------*------*
* </span><span style="color:#98c379">exclude-packages</span><span style="color:#e5c07b"> * List * [] * 要排除的包路径列表 *
* </span><span style="color:#98c379">exclude-classes</span><span style="color:#e5c07b"> * List * [] * 要排除的类全限定名列表 *
* </span><span style="color:#98c379">include-annotations</span><span style="color:#e5c07b"> * List * [] * 要包含的注解全限定名列表 *
📊 性能优化
扫描效率
内存使用
-
✅ 按需加载,只加载必要的类
-
✅ 合理的数据结构
-
✅ 无额外依赖
🧪 测试覆盖
单元测试
-
✅ 通配符解析测试
-
✅ 排除过滤器测试
-
✅ 注解过滤器测试
-
✅ 配置绑定测试
-
✅ 完整流程集成测试
测试用例
* 测试场景 * 状态 *
*----------*------*
* 单级通配符 </span><span style="color:#98c379">*</span><span style="color:#e5c07b"> * ✅ 通过 *
* 多级通配符 </span><span style="color:#98c379">**</span><span style="color:#e5c07b"> * ✅ 通过 *
* 混合通配符 * ✅ 通过 *
* 排除单个包 * ✅ 通过 *
* 排除多个包 * ✅ 通过 *
* 排除单个类 * ✅ 通过 *
* 排除多个类 * ✅ 通过 *
* 自定义注解扫描 * ✅ 通过 *
* 组合配置 * ✅ 通过 *
� 升级指南
从 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 计划
v1.3.0 计划
-
🎯 高级过滤 - 基于正则表达式的包过滤
-
🔄 条件配置 - 基于环境的扫描
长期愿景
� 反馈与支持
如果在使用过程中遇到任何问题或有任何建议,欢迎通过以下方式联系我们:
📄 许可证
AutoScan 使用 Apache License 2.0 开源许可证。