SpringBoot自动装配原理

表达总体思路:总-分-总

1、SpringBoot自动装配是什么,解决了什么问题

2、自动装配实现的原理

  1. 当启动springboot应用的时候,会先创建SpringApplication的对象,在对象的构造方式中会进行某些参数的初始化工作,最主要的是判断当前的应用程序的类型以及初始化器和监听器,在这个过程中会加载整个应用程序中的spring.factories文件,将文件的内容放到缓存对象中,方便后续获取;

  2. SpringApplication对象创建完成之后,开始执行run方法,来完成整个启动,启动过程中最主要的有两个方法,第一个叫prepareContext,第二个叫refreshContext,在这两个关键步骤中完成了自动装配的核心功能,前面的处理逻辑包含了上下文对象的创建,banner的打印,异常报告期的准备等各个准备工作,方便后续进行调用。

  3. 在prepareContext方法中主要完成的是对上下文对象的初始化操作,包括了属性值的设置,比如环境对象,在整个过程中有一个非常重要的方法,叫做load,load主要完成一件事,将当前启动类作为一个beanDefinition注册到registry中,方便后续在进行BeanFactoryPostProcess调用执行的时候,找到对应的主类,来完成@SpringBootApplication,@EnableAutoCOnfiguration等注解的解析工作;

  4. 在refreshContext方法中会进行整个容器刷新过程,会调用spring的refresh方法,refresh 方法中有13个非常关键的方法,来完成整个spring应用程序的启动,在自动装配的过程中,会调用invokeBeanFactoryPostProcessor方法,在此方法中主要是对ConfigurationClassPostProcess类的处理,这次是BFPP的子类,也是BDRPP的子类,在调用的时候会先调用BDRPP中的postProcessBeanDefinitionRegistry方法,然后调用postProcessBeanFactory方法,在执行postProcessBeanDefinitionRegistry的时候会解析处理各种注解,包含@ProperSource,@ComponentScan,@CompanentScans,@Bean,@Import等注解,最主要的是@Import注解的解析。

  5. 在解析@Import注解的时候,会有一个getImports的方法,从主类开始递归解析注解,把所有包含@Importd的注解都解析到,然后在processImport方法中对Import的类进行分类,此处主要识别的时候,AutoConfigurationImportSelect归属到ImportSelect的子类,在后续过程中会调用deferredImportSelectorHandler中的process方法,来完成EnableAutoConfiguration的加载。

  6. 上面就是我对springboot自动装配的简单理解。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值