- 打开
@SpringBootApplication
可看到@EnableAutoConfiguration
,即开启自动配置功能 - 打开
@EnableAutoConfiguration
可看到@AutoConfigurationPackage
,即自动配置包 - 打开
@AutoConfigurationPackage
可看到@Import(AutoConfigurationPackages.Registrar.class)
,即向容器中注入AutoConfigurationPackages.Registrar.class
- 进入可看到
@Override
public void registerBeanDefinitions(AnnotationMetadata metadata,
BeanDefinitionRegistry registry) {
register(registry, new PackageImport(metadata).getPackageName());
}
其中AnnotationMetadata metadata
是最初的@SpringBootApplication
标签,故new PackageImport(metadata).getPackageName()
就可获得@SpringBootApplication
标签所在的包路径。
总结:SpringBoot会将当前启动类所在包下面的所有组件扫描到容器中。