🎉 AutoScan v1.1.0 发布 - 通配符包扫描、排除过滤、自定义注解三大新特性

1 阅读5分钟

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-packagesList[]要排除的包路径列表
exclude-classesList[]要排除的类全限定名列表
include-annotationsList[]要包含的注解全限定名列表

📊 性能优化

扫描效率

  • ✅ 通配符解析优化,减少不必要的扫描
  • ✅ 排除过滤器提前应用,减少扫描范围
  • ✅ 注解过滤器按需配置,避免过度扫描
  • ✅ 使用 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

新特性采用顺序

  1. 先使用通配符 - 简化现有配置,风险低
  2. 再使用排除扫描 - 精确控制扫描范围
  3. 最后使用自定义注解 - 扩展扫描能力

📝 变更记录

类型说明
feat新增通配符包支持
feat新增排除扫描功能
feat新增自定义注解扫描
docs更新中文文档
docs新增英文文档
docs新增语言选择页面
docs实现文档缓存解决方案
test新增单元测试和集成测试

🎯 未来规划

v1.2.0 计划

  • 📦 @Import 兼容性 - 在配置中直接导入特定类
  • ⚡ 懒加载初始化 - 支持懒加载 Bean 初始化

v1.3.0 计划

  • 🎯 高级过滤 - 基于正则表达式的包过滤
  • 🔄 条件配置 - 基于环境的扫描

长期愿景

  • 🔌 插件系统 - 可扩展的扫描策略
  • 📊 监控仪表板 - 可视化扫描分析
  • 🌐 Spring Cloud 集成 - 微服务优化

� 反馈与支持

如果在使用过程中遇到任何问题或有任何建议,欢迎通过以下方式联系我们:


📄 许可证

AutoScan 使用 Apache License 2.0 开源许可证。