springboot主配置类的注解是
@SpringBootApplication
他等同于这三个注解:
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan(excludeFilters = { @Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class),
@Filter(type = FilterType.CUSTOM, classes = AutoConfigurationExcludeFilter.class) })
@SpringBootConfiguration的意思是这个主程序也是springboot里面的一个配置类
@ComponentScan(excludeFilters = { @Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class),
@Filter(type = FilterType.CUSTOM, classes = AutoConfigurationExcludeFilter.class) })就是同一个包扫描,指定扫描那些包
核心是
@EnableAutoConfiguration
他由这两个注解组成
@AutoConfigurationPackage
@Import(AutoConfigurationImportSelector.class)
@AutoConfigurationPackage是自动配置包,里面也是由import注解组成,它的作用是利用register给熔铸中批量注册一些组件,将指定包下的所有组件注册到容器中,
如图,application在server包下,那么扫描的就是server包下的所有包和其所有组件。