SpringBoot自动装配原理初探
springBoot自动装配原理
1
2
3
4
5
6
7
8
9
10
11
12
13
14
// 继承了Configuration,表示当前是配置类
// 自动扫描并加载符合条件的组件或者bean , 将这个bean定义加载到IOC容器中
//@EnableAutoConfiguration也是借助@Import的帮助,将所有符合自动配置条件的bean定义加载到IOC容器
// 开启springboot的注解功能,springboot的四大神器之一,其借助@import的帮助
// 自动配置包注册
// 导入当前主程序类的 *同级以及子级*的包组件
// 导入自动配置的组件
主要做了以下四件事情:
1、推断应用的类型是普通的项目还是Web项目
2、查找并加载所有可用初始化器,设置到initializers属性中
3、找出所有的应用程序监听器,设置到listeners属性中
4、推断并设置main方法的定义类,找到运行的主类
@ComponentScan的功能其实就是自动扫描并加载符合条件的组件(比如@Component和@Repository等)或者bean定义,最终将这些bean定义加载到IoC容器中。我们可以通过basePackages等属性来细粒度的定制@ComponentScan自动扫描的范围,如果不指定,则默认Spring框架实现会从声明@ComponentScan所在类的package进行扫描。
注:所以SpringBoot的启动类最好是放在root package下,因为默认不指定basePackages。
1 | static class Registrar implements ImportBeanDefinitionRegistrar, DeterminableImports { |
1 | AutoConfigurationImportSelector 继承了 DeferredImportSelector 继承了 ImportSelector |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 柳门竹巷!
评论