大家好,欢迎来到IT知识分享网。
文章目录
前言
学习了一段时间的springboot,知道了boot的四大核心组件,自动配置(autoconfiguration),起步依赖(starter),监控器(actuator),命令行界面(groovy),本文注重讲解starter的启动原理,通过对boot的源码追踪,向大家展示starter的所有细节。
一、什么是starter
也许还有部分同学不知道starter的具体含义,在此简单的解释一下,starter在自动配置的基础之上,使得boot能够自动的加载各种应用模块到boot中,而且不需要我们做任何的配置,直接按默认配置即可,这极大地简化了我们的开发时间。
二、注解追踪
- 进入@SpringBootApplication注解
- 进入@EnableAutoConfiguration注解
- 进入AutoConfigurationImportSelector类
- 进入selectImports方法
- 进入getCandidateConfigurations(annotationMetadata, attributes)方法
- 进入loadSpringFactories(classLoaderToUse)方法
- 最终定位到getResource方法
注解追踪到此处就算完了,接下来我们就只剩一个问题,通过调用刚才注解里一系列的方法,可以把spring.factories文件中所有的配置类加载到boot中,那我们又是何时调用这个方法进行加载的呢,继续进行我们的方法追踪你就能过得到答案!注:另外再给一张图帮助你准确的找到上述文件
三、方法追踪
- 进入run方法
- 进入refreshContext(context)方法
- 持续点击进入refresh方法
- 进入ServletWebServerApplicationContext实现类
- 进入父类的refresh方法
- 进入invokeBeanFactoryPostProcessors(beanFactory)方法
- 找到invokeBeanFactoryPostProcessors,进入postProcessBeanFactory(beanFactory)方法
- 进入ConfigurationClassPostProcessor类
- 进入processConfigBeanDefinitions方法
- 进入parse(candidates)方法
- 按ctrl加f找到doProcessConfigurationClass方法
- 在doProcessConfigurationClass方法中找到processImports方法,点击进入
- 最终找到selectImports方法
经过孜孜不倦的追踪,终于把它给追到了,相信此时的你是兴奋的,哪天你想追女神却苦求无果时,就可以来看看本文,相信本文会给你莫名的勇气与力量,一鼓作气把你的女神抱回家,最后不用感谢我,你开心就好!虽说是从两个方向进行追踪,但最后我们总结起来的时候确实很有收获,先在注解中通过import类导入所有的配置类,最后在run运行时对bean的加载过程中,处理加了@Configuration注解的类,再处理类上的@Import注解,最终又回到了selectImports方法,过程不可谓不饶,但不得不说会饶的程序员才是优秀的程序员。
总结
学无止境,IT学是不可能学完的,但我们可以朝着一个目标,比如立志学秃还是可以的!
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/156488.html