Spring的组件以及之间的关系。
Spring是一个引擎,SpringMvc是在Spring框架上升级的MVC架构,Springboot则是基于Spring的条件注册的一个快速开发整合包,实现了自动配置,SpringBoot应用中对于包含其中的第三方库可以做到开箱即用。
所以SpringBoot的自动配置是怎么实现的呢?SpringBoot的项目启动类中只有一个@SpringBootApplication注解和一个run方法
@SpringBootApplication中包含了:@SpringBootConfiguration,@EnableAutoConfiguration, @ComponentScan三个注解。
@SpringBootConfiguration注解点进去即是@Configuration注解,这个注解加上后表示这个类是一个配置类,不用再像SpringMvc中用xml文件声明。
@ComponentScan功能是自动扫描并加载符合条件的组件或者bean定义,并将这些东西加载到IOC容器当中。我们可以通过basePackage来指定扫描的范围,但是如果不指定的话会自动扫描加上了此注解的类所在的包,所以启动类一般都放在root package下。
@EnableAutoConfiguration最为重要。
借助@Import的帮助,将所有符合自动配置条件的bean加载到IOC容器当中。该配置模块主要用到了SpringFactoriesLoader。
SpringFactoriesLoader 这个是Spring工厂加载器,提供了loadFactoryNames方法,入参为factoryClass和classLoader,就是需要传入工厂类名称和对应的类加载器,然后会根据指定的classLoader加载该类加载器搜索路径下的指定文件。
图文流程
转自juejin.cn/post/684490… 纯粹当学习笔记记录