SpringBoot之自动配置流程说明

之前我们一起看了Springboot是如何内嵌tomcat的今天我们来说一下SpringBoot 启动时自动配置 

正如我们看见的只要pom文件里引了你要的依赖

在使用注解 @Autowired 时就能直接实例化使用 这是怎么做到的呢。我们下面就来一起看看。

 

首先我们可以看见Springboot启动时只需要main方法里运行main方法就可以启动了

然后加上了一个@SpringbootApplication的注解

那么Springboot启动时的配置一定和这个注解有莫大的关系,我们跟进来看一下

可以看到这里有引入一些注解

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited   
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan

@Documented   注解表明这个注释是由 javadoc记录的。 如果一个类型声明被注释了文档化,它的注释成为公共API的一部分。

@SpringBootConfiguration 这个就是Springboot的配置,标注这个类是一个配置类@EnableAutoConfiguration允许自自动配置关(关键注解) @ComponentScan扫描启动类同级包下的配置进行实例化。

我们先来说一下@SpringBootConfiguration 我们跟进去可以看见下图,可以看出这个SpringBootConfiguration只是@Configuration的派生

 

所以我们还是要看@EnableAutoConfiguration 我们跟进来可以看到组合注解@AutoConfigurationPackage和@Import(AutoConfigurationImportSelector.class) 我们来进入AutoConfigurationImportSelector

我们进入 AutoConfigurationImportSelector 可以看到他一路来找自动配置

我们进入getCandidateConfigurations 可以看到SpringFactoriesLoader.loadFactoryNames,这里就是来进行Spring工厂加载

我们进来,到这里我们终于要找到正主了

classLoader.getResources
ClassLoader.getSystemResources 这两个指向的是同一个文件我们进去看看

 看看我们发现了什么原来他就是来读取这个文件中的预配置好的组件

 我们进来文件看看,是不是非常熟悉,就是咱们常用的,这里也就解释了为什么注解写一个 @Autowired 就能自动引入了,他就是扫描你的pom文件和这里看看能不能匹配上如果这里没有那么就只能自己配置@Configuration 来自己启动时加载。

我们随便从这个文件中选一个没有pom文件中没有引的包看看,看看是不是很多红色报错呀。这就对了,你可以再点开这个文件中你再pom文件中引了看看。

 这就是Springboot的厉害之处  加载所有组件你引入的就是绿色 没引入就是报红,而且不影响启动。自动配置能做到如此也是厉害了。

本文只是个人观点,如有不正确之处,欢迎指出,我会查证修改。

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值