SpringBoot自动装配

2020-12-09  本文已影响0人  轻轻敲醒沉睡的心灵

1. @SpringBootApplication注解

SpringBoot自动装配发生在@SpringBootApplication注解,那@SpringBootApplication由哪几部分组成?
查看源码:


image.png

这里面包含了@SpringBootConfiguration,@EnableAutoConfiguration,@ComponentScan,此处@ComponentScan由于没有指定扫描包,因此它默认扫描的是与该类同级的类或者同级包下的所有类,另外@SpringBootConfiguration,通过源码得知它是一个@Configuration。由此我们可以推断出@SpringBootApplication等同于@Configuration @ComponentScan @EnableAutoConfiguration

2. 自动装配

ComPonentScan找到了需要装配的bean,加载到Spring的IOC容器中;EnableAutoConfiguration上有个Import注解,这个注解里面包含了一个实现了ImportSelector的类,在它里面的selectImports方法可以选择注入需要的Bean。从源码可以看到过程:

  1. 扫描META-INF/spring-autoconfigure-metadata.properties文件,它里面定义了很多的Conditional条件,例如ConditionalOnClass
  2. 扫描META-INF/spring.factories,结合前面扫描到的进行过滤,原因是很多@Configuration其实是依托于其它的框架来加载的,如果当前classpath下没有相关的依赖,则意味着这些类没必要加载,所以通过这种条件过滤可以有效的减少@Configuration类的数量从而降低启动时间。

参考文章:https://www.cnblogs.com/niechen/p/9027804.html
https://www.cnblogs.com/gaojf/p/12941944.html

上一篇 下一篇

猜你喜欢

热点阅读