SpringBoot @SpringBootApplication 注解

@SpringBootApplication 是 Spring Boot 中的核心注解,用于标记主配置类,启动 Spring Boot 应用。它简化了配置,结合了多个常用注解的功能。下面从源码角度详细解释其作用。

1. 注解定义

@SpringBootApplication 的源码如下:

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan(excludeFilters = { @Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class),
        @Filter(type = FilterType.CUSTOM, classes = AutoConfigurationExcludeFilter.class) })
public @interface SpringBootApplication {
    // 其他属性...
}

2. 组合注解

@SpringBootApplication 是多个注解的组合:

  • @SpringBootConfiguration:标记该类为配置类,是 @Configuration 的变种。
  • @EnableAutoConfiguration:启用自动配置,Spring Boot 根据依赖自动配置应用。
  • @ComponentScan:扫描当前包及其子包下的组件(如 @Component, @Service, @Repository, @Controller 等)。

3. 详细解析

3.1 @SpringBootConfiguration

@SpringBootConfiguration 继承自 @Configuration,标记该类为配置类,允许定义 Bean。

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Configuration
public @interface SpringBootConfiguration {
}

3.2 @EnableAutoConfiguration

@EnableAutoConfiguration 启用自动配置,Spring Boot 根据类路径和配置自动配置应用。

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@AutoConfigurationPackage
@Import(AutoConfigurationImportSelector.class)
public @interface EnableAutoConfiguration {
    // 其他属性...
}
  • @AutoConfigurationPackage:将主配置类所在包及其子包纳入自动配置范围。
  • @Import(AutoConfigurationImportSelector.class):导入自动配置类,AutoConfigurationImportSelector 负责加载 META-INF/spring.factories 中的自动配置类。
  • 更详细的介绍看这里

3.3 @ComponentScan

@ComponentScan 扫描并注册 Spring 组件。

@ComponentScan(excludeFilters = { 
    @Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class),
    @Filter(type = FilterType.CUSTOM, classes = AutoConfigurationExcludeFilter.class) 
})
  • excludeFilters:排除特定类型的组件,TypeExcludeFilterAutoConfigurationExcludeFilter 用于过滤自动配置类。

4. 总结

@SpringBootApplication 通过组合多个注解简化了 Spring Boot 应用的配置:

  • @SpringBootConfiguration:标记配置类。
  • @EnableAutoConfiguration:启用自动配置。
  • @ComponentScan:扫描并注册组件。

使用时,只需在主类上添加 @SpringBootApplication 注解即可启动 Spring Boot 应用。

posted @   CyrusHuang  阅读(52)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示