前言
大家好!今天给大家带来一个好消息------AutoScan v1.2.0 正式发布啦!🎉
作为一个轻量级的 Spring Boot Starter,AutoScan 专门解决企业级 Spring Boot 开发中跨包扫描的痛点问题。在这个新版本中,带来了三大重磅新特性:@Import 兼容性 、懒加载初始化 和启用开关,让你的包扫描配置更灵活、性能更优秀!
项目简介
首先,简单回顾一下 AutoScan 的核心功能:
- ✅ 自动基础包扫描 - 在基础设施项目中配置一次,对所有依赖项目生效
- ✅ 业务包零配置 - 利用
@SpringBootApplication的默认扫描机制 - ✅ 多层基础设施支持 - 业务项目也可以作为其他项目的基础设施
- ✅ 非侵入式设计 - 不改变现有代码结构
- ✅ 开发者友好 - 提供详细的扫描日志便于调试
- ✅ 轻量级 - 无额外依赖,与 Spring Boot 完美兼容
三大新特性详解
1. @Import 兼容性 🌟
功能描述:支持在配置中直接导入特定类,类似 Spring 的 @Import 注解。
为什么需要这个功能?
在实际开发中,我们经常会遇到这样的场景:
- 需要导入第三方库的配置类
- 需要导入特定的业务配置
- 不想修改现有代码结构
- 希望通过配置灵活控制配置类的加载
使用方法:
yaml
auto-scan:
imports:
- org.example.config.AppConfig
- org.example.config.WebConfig
- org.example.config.SecurityConfig
这就相当于在代码中使用:
java
@Import({
org.example.config.AppConfig.class,
org.example.config.WebConfig.class,
org.example.config.SecurityConfig.class
})
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
实际应用场景:
yaml
auto-scan:
base-packages:
- org.example
imports:
- com.thirdparty.config.RedisConfig
- com.thirdparty.config.MongoConfig
- org.example.config.ProductionConfig
优势总结:
- ✅ 直接导入特定配置类,无需通过包扫描
- ✅ 支持导入任意类型的类
- ✅ 与现有扫描功能无缝集成
- ✅ 灵活配置,无需修改代码
2. 懒加载初始化 ⚡
功能描述:支持 Bean 的懒加载创建,优化启动时间和内存使用。
为什么需要这个功能?
随着项目规模的增长,你可能会遇到:
- 应用启动时间越来越长
- 内存占用越来越大
- 很多组件在启动时不需要,只在特定场景下使用
- 希望提高开发和测试的效率
使用方法:
全局懒加载
yaml
auto-scan:
lazy-initialization: true
包级懒加载
yaml
auto-scan:
lazy-packages:
- org.example.service
- org.example.repository
- org.example.integration
类级懒加载
yaml
auto-scan:
lazy-classes:
- org.example.controller.UserController
- org.example.service.OrderService
- org.example.config.HeavyConfiguration
组合使用
yaml
auto-scan:
# 全局懒加载
lazy-initialization: true
# 额外指定包级懒加载
lazy-packages:
- org.example.service
# 额外指定类级懒加载
lazy-classes:
- org.example.controller.UserController
实际应用场景:
yaml
auto-scan:
base-packages:
- org.example
# 对服务层和数据访问层启用懒加载
lazy-packages:
- org.example.service
- org.example.repository
# 对特定的重型组件启用懒加载
lazy-classes:
- org.example.config.DataSyncConfig
- org.example.config.ReportConfig
性能提升效果:
测试数据,使用懒加载后:
- ✅ 启动时间减少 20% 以上
- ✅ 内存占用减少 15% 以上
- ✅ 开发和测试效率显著提升
懒加载最佳实践:
-
推荐使用:
- 非关键服务
- 启动时不需要的组件
- 资源密集型组件
- 按需加载的功能
-
避免使用:
- 核心服务
- 启动时必须初始化的组件
- 依赖关系复杂的组件
3. 启用开关 🔧
功能描述:支持完全启用或禁用 AutoScan 组件,提供更大的灵活性。
为什么需要这个功能?
你可能会遇到这样的场景:
- 测试环境中临时禁用 AutoScan
- 多环境配置,根据环境决定是否启用
- 调试和排查问题时控制 AutoScan 的行为
- 与其他扫描机制配合使用
使用方法:
启用 AutoScan(默认)
yaml
auto-scan:
enabled: true
base-packages:
- org.example
禁用 AutoScan
yaml
auto-scan:
enabled: false
base-packages:
- org.example # 即使配置了包,也不会进行扫描
默认启用(不配置)
yaml
auto-scan:
base-packages:
- org.example # 默认启用
实际应用场景:
yaml
# application-dev.yml
auto-scan:
enabled: true # 开发环境启用
base-packages:
- org.example
dev-mode: true
# application-test.yml
auto-scan:
enabled: false # 测试环境禁用,使用其他扫描机制
# application-prod.yml
auto-scan:
enabled: true # 生产环境启用
base-packages:
- org.example
lazy-initialization: true
优势总结:
- ✅ 完全控制 AutoScan 的激活状态
- ✅ 禁用时不执行任何扫描操作,提高启动速度
- ✅ 与现有配置无缝集成
- ✅ 支持多环境灵活配置
完整配置示例
看一个完整的配置示例,展示所有新特性的组合使用:
yaml
auto-scan:
# 启用开关
enabled: true
# 使用通配符简化配置
base-packages:
- org.example.*
- com.company.**
# 排除不必要的代码
exclude-packages:
- org.example.test
- org.example.example
# 自定义注解支持
include-annotations:
- org.springframework.stereotype.Service
- org.example.annotation.CustomComponent
# @Import 兼容性
imports:
- org.example.config.AppConfig
- org.example.config.WebConfig
- com.thirdparty.config.RedisConfig
# 懒加载初始化
lazy-initialization: true
lazy-packages:
- org.example.service
- org.example.repository
lazy-classes:
- org.example.controller.UserController
- org.example.config.HeavyConfiguration
# 开发模式
dev-mode: true
升级指南
好消息!完全向后兼容,无需修改现有配置!
步骤 1:更新依赖版本
xml
<dependency>
<groupId>org.itrys</groupId>
<artifactId>autoscan-spring-boot-starter</artifactId>
<version>1.2.0</version>
</dependency>
步骤 2:(可选)使用新特性
yaml
auto-scan:
# 启用开关
enabled: true
# @Import 兼容性
imports:
- org.example.config.AppConfig
# 懒加载初始化
lazy-initialization: true
lazy-packages:
- org.example.service
就这么简单!所有现有配置将继续工作。
性能优化建议
1. 懒加载使用建议
推荐配置:
yaml
auto-scan:
base-packages:
- org.example
# 对非关键服务启用懒加载
lazy-packages:
- org.example.service
- org.example.repository
# 对重型组件启用懒加载
lazy-classes:
- org.example.config.DataSyncConfig
- org.example.config.ReportConfig
避免配置:
yaml
auto-scan:
base-packages:
- org.example
# 避免过度使用全局懒加载
lazy-initialization: true
# 避免过于宽泛的包级懒加载
lazy-packages:
- org.example.** # 可能包含需要立即初始化的组件
2. 组合配置最佳实践
yaml
auto-scan:
# 启用 AutoScan
enabled: true
# 使用通配符简化配置
base-packages:
- org.example.*
- com.company.**
# 排除不必要的代码
exclude-packages:
- org.example.test
- org.example.example
# @Import 特定配置
imports:
- org.example.config.AppConfig
- org.example.config.WebConfig
# 懒加载优化性能
lazy-packages:
- org.example.service
- org.example.repository
总结
AutoScan v1.2.0 带来了三大重磅新特性:
- @Import 兼容性 - 让你可以在配置中直接导入特定类
- 懒加载初始化 - 显著提升启动性能和内存使用效率
- 启用开关 - 完全控制 AutoScan 的激活状态
这些新特性让 AutoScan 更加灵活、高效,能够更好地满足企业级应用的需求。
未来展望
已经在规划 v1.3.0 版本,包括:
- 🎯 高级过滤 - 基于正则表达式的包过滤
- 🔄 条件配置 - 基于环境的扫描
长期愿景包括:
- 🔌 插件系统 - 可扩展的扫描策略
- 📊 监控仪表板 - 可视化扫描分析
- 🌐 Spring Cloud 集成 - 微服务优化
相关链接
- GitHub 仓库 : github.com/itrys/autos...
- Gitee 仓库 : gitee.com/itrys/autos...
- 中文文档 : autoscan.itrys.com
- 问题反馈 : GitHub Issues
写在最后
如果您觉得这个项目对您有帮助,欢迎给AutoScan项目一个 Star ⭐!
如果在使用过程中遇到任何问题或有任何建议,欢迎通过 GitHub Issues 或 Gitee Issues 联系。
感谢大家的支持!🎉