springBoot启动类
启动类上,使用该注解,定义要扫描的包
@ComponentScan(value ={"com.hollycrm,com.csc"})
因为@SpringBootApplication 会默认将扫描位置等于当前目录。详见@SpringBootApplication 的内容。
1.1 @SpringBootApplication
包含3个子注解
1.1.1
@SpringBootConfiguration:Spring Boot的配置类;标注在某个类上,表示这是一个Spring Boot的配置类;
@Configuration:配置类上来标注这个注解;配置类 ----- 配置文件;配置类也是容器中的一个组件;
@Component 将类注入容器
1.1.2 自动 配置信息
@EnableAutoConfiguration Spring的底层注解@Import,给容器中导入一个组件
@Import({EnableAutoConfigurationImportSelector.class}) 导入类
EnableAutoConfigurationImportSelector extends AutoConfigurationImportSelector 中获取
给容器中导入非常多的自动配置类(xxxAutoConfiguration)
其中方法 getCandidateConfigurations() 调用loadFactoryNames()
扫描所有jar包类路径下 META-INF/spring.factories
把扫描到的这些文件的内容包装成properties对象
从properties中获取到EnableAutoConfiguration.class类(类名)对应的值,然后把他们添加在容器中。
1.1.3
扫描位置
@ComponentScan(excludeFilters = {
@Filter(type = FilterType.CUSTOM,classes = {TypeExcludeFilter.class}),
@Filter(type = FilterType.CUSTOM,classes = {AutoConfigurationExcludeFilter.class})
})
默认是启动类的当前及其子目录。 也可自定义扫描包,在启动类使用注解。
@ComponentScan(value ={"com.hollycrm","com.csc"})
@SpringBootApplication