SpringBoot自动装配原理

4 篇文章 0 订阅

最近看了很多面试题,springboot自动装配原理有很多人问,然后就想写一篇配合着源码口语化说一下springboot自动装配的原理

Main方法

springbootmain方法
Main方法是java程序的入口,springboot的main方法下有一个run方法,我们点进源码
在这里插入图片描述
发现run方法点进去返回的还是一个run方法,我们在连续点两次run方法,直到我们看到我们的run方法:
run方法点到refresh
里面最重要的是refreshContext方法,它能够刷新容器,它读你的配置文件,扫你的注解,只要你一刷新容器,他就会扫,于是你才可以在SpringBootApplication注解里往深的点。

SpringBootApplication

SpringBootApplication
接下来,我们看到springboot配置类上面有一个@SpringBootApplication注解,我们点进去
三个重要注解
里面有三个重要的注解:
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan

其中,
@SpringBootConfiguration:其实就是spring里面的Configuration注解,它是用来标注一个类为配置类的。
@ComponentScan:这个注解也是spring里面的,它是用来将指定包下面需要装配的组件注册到容器里面去。
第三个注解叫@EnableAutoConfiguration,这个注解是springBoot的自动配置的核心注解,他开启的springBoot的自动配置,他在里面引入了一个类,叫做AutoConfigurationImportSelector,
在这里插入图片描述
这个类会有一个核心方法,帮助我们从类路径下的meta-info的spring.factories下加载一些东西。
在这里插入图片描述
他会跟着很多很多的配置文件,配置类,他会加载所有的配置类,加载到容器里面,他里面有很多的条件注解,会根据你引入的jar包,注入的bean,把相应的bean自动的注入到我们的容器里面,于是就实现了自动装配。

总结:

总:springBoot启动类是一个main方法,里面调用的是SpringApplication的静态方法,run方法,在run方法里面能一直点进去另一个run方法,直到一个run方法里面有一个refreshContext(context),他能够刷新容器,他读你的配置文件,扫你的注解,只要你一刷新容器,他就会扫,于是你才可以在springBootApplication注解里往深的点。springBootApplication里面有一个重要的注解:@EnableAutoConfiguration,他开启的springBoot的自动配置,他在里面引入了一个类,叫做AutoConfigurationImportSelector,这个类会有一个核心方法,帮助我们从类路径下的meta-info的spring.factories下加载一些东西,他会跟着很多很多的配置文件,配置类,他会加载所有的配置类,加载到容器里面,他里面有很多的条件注解,会根据你引入的jar包,注入的bean,把相应的bean自动的注入到我们的容器里面,于是就实现了自动装配。

简:springBoot在启动的时候,会调用run方法,run方法会刷新容器,刷新容器的时候他会从类路径下找到spring.factories文件,在这个文件里面记录了好多自动配置类,我们会在启动的时候把这个配置类加载到容器里面,这些配置类里面有好多的条件注解,他会根据我们有没有引入相应的jar包,有没有注入一些bean来自动的给我们的容器注入我们需要的bean,于是就实现了自动装配

这个问题其实跟着点几次,然后把步骤印在脑海里,就能从run方法一直讲到spring.factories不断了,很快昂,啪的一下就能全部完整的说完了

祝大家面试顺利,都能拿到想要的工作 ()

  • 12
    点赞
  • 71
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值