Spring Boot的自动装配原理(Java学习笔记)

1.自动装配是什么?

自动装配就是把别人写好的config配置类加载到spring容器,然后根据这个配置类生成一些项目需要的bean对象。

2.自动装配的开关在哪?

在@SpringBootApplication注解里的@EnableAutoConfiguration用@Import注解导入了@AutiConfigurationImportSelector.class类,这个类的selectImports方法会扫描到我们类路径下的spring.factories文件(里面装的是有很多官方写好的自动装配类的全限定名),然后返回这些类的名字。
slectImports方法如下:

public String[] selectImports(AnnotationMetadata annotationMetadata) { 
   
        if (!this.isEnabled(annotationMetadata)) { 
   
            return NO_IMPORTS;
        } else { 
   
            AutoConfigurationImportSelector.AutoConfigurationEntry autoConfigurationEntry = this.getAutoConfigurationEntry(annotationMetadata);
            return StringUtils.toStringArray(autoConfigurationEntry.getConfigurations());
        }
    }

3.结束语

其实springboot的自动装配还是比较复杂的,大概可以概括为:在启动类的run方法传入启动类的class(方便后面获取其注解信息)。
执行run方法,创建SpringApplication对象,并用LoadSpringFactories()方法将/META-INF/spring.factories文件里的k-v读入缓存(方便后面加载时使用)。
然后继续run方法,在某处会获取传入的启动类的class,并解析上面的注解,当解析到@Import({AutoConfigurationImportSelector.class})时会将AutoConfigurationImportSelector加载进方法区,通过反射创建对象,调用其某一个方法,从缓存读取前面存储的k-v,并经过一系列的过滤、去重等,最后将需要的配置类加载,生成BD对象,创建Bean对象,放入spring容器。

学习原文

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值