SpringBoot工程之所以使用起来简单,快捷是因为其底层提供了两个非常重要的功能:起步依赖和自动配置
起步依赖原理:Maven的依赖传递
面试中,问题:SpringBoot的原理,即自动配置原理
就是分析在SpringBoot项目中,我们引入对应的依赖以后,是如何将依赖jar包中的这些Bean以及配置类加载到当前项目的SpringIOC容器当中,我们能够直接使用
方案一:
@ComponentScan({"com.ithema","com.example"})//组件扫描,扫描com.ithema和com.example这两个包
通过在启动类中添加@ComponentScan组件扫描的形式来扫描第三方依赖中的Bean和配置类
特点:使用繁琐,性能低
方案二:
@Import({TokenParser.class})//导入普通类,交给IOC容器管理 @Import({HeaderConfig.class})//导入配置类,交给IOC容器管理 @Import({MyImportSelector.class})//导入ImportSelector接口实现类,再实现类中指定要交个IOC容器管理的类 @EnableHeaderConfig
我们可以通过Import导入第三方依赖提供的这些Bean或者配置类,将来我们引入一个第三方依赖,我们还必须清楚的知道要导入第三方依赖的哪些Bean对象和配置类,很繁琐,而我们要导入第三方依赖的哪些Bean对象和配置类第三方依赖最清楚,所以我们就不用自己再导入哪些Bean对象和配置类,让第三方依赖自己指定,第三方依赖给我们提供一个注解,一般是@EnableXxxx开头的注解,封装@Import注解,在@Import注解中再指定要导入哪些Bean或者配置类,在启动类上加上@EnableXxxx注解,就等于加上了@Import注解注解
第四种方式也是SpringBoot所采用的方式