面试官必问题:SpringBoot自动装配原理?!

SpringBoot


SpringBoot自动配置流程


BeanDefinition的注册顺序

  • 先@ComponentScan的: @Component、@Serivce、@Controller
  • @Import的: @Component、@Service、@Controller
  • @Configuration: 和该配置类里面的@Bean->该配置类里面的@Import进来的实现了ImportBeanDefinitionRegistrar接口的
  • @Import进来的@Configuration: 和该配置类里面的@Bean->该配置类里面的@Import进来的实现了ImportBeanDefinitionRegistrar接口的
  • @Import进来的实现了DeferredImportSelector接口的@Configuration: 和该配置类里面的@Bean->该配置类里面的@Import进来的实现了ImportBeanDefinitionRegistrar接口的

自动装配原理

首先会通过import导入DeferredImportSelector.
为什么要导入DeferredImportSelector呢,这是因为为了顺序的一个考虑,它的加载顺序是最后的,把它放到最后呢才能进行定制我们自己的,而不是以它的Bean优先
然后去扫描所有jar包中的spring.factories文件,把其中所有全类限定名封装成一个list,然后进行排序返回给Spring,然后Spring会将它们注册是BeanDeifnition放到BeanDefinitionMap中去,然后Spring就能管理到这些Bean了
Java八股文 文章被收录于专栏

长期分享Java面试、面经、学习、架构笔记

全部评论
面试官必问题:SpringBoot自动装配原理?!
点赞 回复 分享
发布于 2022-05-12 22:12

相关推荐

给🐭🐭个面试机会...:我擦seed✌🏻
点赞 评论 收藏
分享
评论
1
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务