@Configuration 和 @AutoConfiguration 的区别
@Configuration
是一个 Spring 注解,并不严格绑定于 Spring Boot。它的作用是支持以编程方式创建 Spring Bean,以简化 XML 配置。
@AutoConfiguration
是 Spring Boot 提供的注解(Spring Boot 2.7 引入)。它的存在是为了让与 Spring Boot 协作的外部服务提供者能够在他们提供的某些库中标记一些类,告知 Spring Boot 这些类可以被解析,Spring Boot 在启动时,会扫描到这些类并自动进行一些初始化操作。
根据 Spring Boot 文档:
Spring Boot 的自动配置尝试根据您添加的 JAR 依赖项自动配置您的 Spring 应用。例如,如果 HSQLDB 在您的类路径中,并且您没有手动配置任何数据库连接 Bean,那么 Spring Boot 会自动配置一个内存数据库。
依靠此机制,如果开发人员在开发应用时恰好将 Kafka 作为依赖,那么一些 Bean 将会自动创建并添加到 Spring 容器中以供程序员使用,尽管他并没有为这些 Bean 定义任何配置。Spring Boot 之所以知道注入哪些 Bean,是因为 Kafka 的提供者已经在他们提供的 JAR 中用@AutoConfiguration
注解标记了某个类,Spring Boot 扫描到这个类之后,就会进行初始化操作(往容器注入 Bean)。
初始化可能存在先后顺序,所以@AutoConfiguration
提供了一些配置选项,如before
、after
、beforeName
和afterName
,以允许依赖提供者指定在应用启动期间何时应用配置,Spring Boot 会对被@AutoConfiguration
标注的类进行排序,按声明的顺序依次加载。
Spring Boot 2.7 之前使用
@AutoConfigureBefore
和@AutoConfigureAfter
来指明加载顺序(注解 @AutoConfigureBefore 和 @AutoConfigureAfter 的用途)。
因此,这个注解是为那些开发依赖库的开发者准备的,这些库可能会被使用者引入到 Spring Boot 项目中。比如 Kafka 的相关库。
另外:
- 为了使其在 Spring Boot 项目中生效,需要使用
@EnableAutoConfiguration
来启用自动配置 @AutoConfiguration
注解本身被@Configuration
标记,所以它也可以被用来创建 Bean
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!