springboot-starter启动原理

springboot-starter启动原理文章目录前言一 什么是 starter 二 注解追踪三 方法追踪总结前言学习了一段时间的 springboot 知道了 boot 的四大核心组件 自动配置 autoconfigur 起步依赖 st

大家好,欢迎来到IT知识分享网。

前言

学习了一段时间的springboot,知道了boot的四大核心组件,自动配置(autoconfiguration),起步依赖(starter),监控器(actuator),命令行界面(groovy),本文注重讲解starter的启动原理,通过对boot的源码追踪,向大家展示starter的所有细节。

一、什么是starter

也许还有部分同学不知道starter的具体含义,在此简单的解释一下,starter在自动配置的基础之上,使得boot能够自动的加载各种应用模块到boot中,而且不需要我们做任何的配置,直接按默认配置即可,这极大地简化了我们的开发时间。

二、注解追踪

  1. 进入@SpringBootApplication注解
    在这里插入图片描述
  2. 进入@EnableAutoConfiguration注解
    在这里插入图片描述
  3. 进入AutoConfigurationImportSelector类
    在这里插入图片描述
  4. 进入selectImports方法
    在这里插入图片描述
  5. 进入getCandidateConfigurations(annotationMetadata, attributes)方法
    在这里插入图片描述
  6. 进入loadSpringFactories(classLoaderToUse)方法
    在这里插入图片描述
  7. 最终定位到getResource方法
    在这里插入图片描述
    注解追踪到此处就算完了,接下来我们就只剩一个问题,通过调用刚才注解里一系列的方法,可以把spring.factories文件中所有的配置类加载到boot中,那我们又是何时调用这个方法进行加载的呢,继续进行我们的方法追踪你就能过得到答案!

    注:另外再给一张图帮助你准确的找到上述文件
    在这里插入图片描述

三、方法追踪

  1. 进入run方法
    在这里插入图片描述
  2. 进入refreshContext(context)方法
    在这里插入图片描述
  3. 持续点击进入refresh方法
    在这里插入图片描述
  4. 进入ServletWebServerApplicationContext实现类
    在这里插入图片描述
  5. 进入父类的refresh方法
    在这里插入图片描述
  6. 进入invokeBeanFactoryPostProcessors(beanFactory)方法
    在这里插入图片描述
  7. 找到invokeBeanFactoryPostProcessors,进入postProcessBeanFactory(beanFactory)方法
    在这里插入图片描述
  8. 进入ConfigurationClassPostProcessor类
    在这里插入图片描述
  9. 进入processConfigBeanDefinitions方法
    在这里插入图片描述
  10. 进入parse(candidates)方法
    在这里插入图片描述
  11. 按ctrl加f找到doProcessConfigurationClass方法
    在这里插入图片描述
  12. 在doProcessConfigurationClass方法中找到processImports方法,点击进入
    在这里插入图片描述
  13. 最终找到selectImports方法
    在这里插入图片描述
    经过孜孜不倦的追踪,终于把它给追到了,相信此时的你是兴奋的,哪天你想追女神却苦求无果时,就可以来看看本文,相信本文会给你莫名的勇气与力量,一鼓作气把你的女神抱回家,最后不用感谢我,你开心就好!虽说是从两个方向进行追踪,但最后我们总结起来的时候确实很有收获,先在注解中通过import类导入所有的配置类,最后在run运行时对bean的加载过程中,处理加了@Configuration注解的类,再处理类上的@Import注解,最终又回到了selectImports方法,过程不可谓不饶,但不得不说会饶的程序员才是优秀的程序员。

总结

学无止境,IT学是不可能学完的,但我们可以朝着一个目标,比如立志学秃还是可以的!

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/156488.html

(0)
上一篇 2025-02-11 21:25
下一篇 2025-02-11 21:26

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信