springboot源码怎么看 springboot源码深度解析( 二 )


springboot源码怎么看 springboot源码深度解析


image.png
springboot源码怎么看 springboot源码深度解析


image.png
??好了到这其实我们就清楚了
getSpringFactoriesInstances方法的作用就是帮我们获取定义在 META-INF/spring.factories文件中的可以为
ApplicationContextInitializer 的值 。并通过反射的方式获取实例对象 。然后把实例的对象信息存储在了SpringApplication的 initializers属性中 。
springboot源码怎么看 springboot源码深度解析


image.png
3.setListeners??清楚了 setInitializers()方法的作用后,再看 setListeners()方法就非常简单了,都是调用了
getSpringFactoriesInstances方法,只是传入的类型不同 。也就是要获取的 META-INF/spring.factories文件中定义的不同信息罢了 。
springboot源码怎么看 springboot源码深度解析


image.png
??即加载定义在 META-INF/spring.factories文件中声明的所有的监听器,并将获取后的监听器存储在了 SpringApplication的 listeners属性中 。
springboot源码怎么看 springboot源码深度解析


image.png
??默认加载的监听器为:
springboot源码怎么看 springboot源码深度解析


image.png
4.mainApplicationClass??最后我们来看下
duduceMainApplicaitonClass()方法是如何反推导出main方法所在的Class对象的 。通过源码我们可以看到是通过 StackTrace来实现的 。
1StackTrace:
2我们在学习函数调用时,都知道每个函数都拥有自己的栈空间 。
3一个函数被调用时,就创建一个新的栈空间 。那么通过函数的嵌套调用最后就形成了一个函数调用堆栈
??StackTrace其实就是记录了程序方法执行的链路 。通过Debug方式可以更直观的来呈现 。
springboot源码怎么看 springboot源码深度解析


image.png
??那么相关的调用链路我们都可以获取到,剩下的就只需要获取每链路判断执行的方法名称是否是 main就可以了 。
springboot源码怎么看 springboot源码深度解析


image.png
??好了到此相关的4个核心步骤就给大家分析完了,希望对大家能有所帮助哦!
以上就是爱惜日网?springboot源码怎么看(springboot源码深度解析)的相关内容了,更多精彩请关注作者:爱惜日知识
声明:本文由爱惜日网【创业者资源平台】作者编辑发布,更多技术关注爱惜日技术!

推荐阅读