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:排除特定类型的组件,
TypeExcludeFilter和AutoConfigurationExcludeFilter用于过滤自动配置类。
4. 总结
@SpringBootApplication 通过组合多个注解简化了 Spring Boot 应用的配置:
- @SpringBootConfiguration:标记配置类。
- @EnableAutoConfiguration:启用自动配置。
- @ComponentScan:扫描并注册组件。
使用时,只需在主类上添加 @SpringBootApplication 注解即可启动 Spring Boot 应用。

浙公网安备 33010602011771号