日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

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文件中聲明的所有的監(jiān)聽器,并將獲取后的監(jiān)聽器存儲在了 SpringApplication的 listeners屬性中 。
springboot源碼怎么看 springboot源碼深度解析


image.png
??默認加載的監(jiān)聽器為:
springboot源碼怎么看 springboot源碼深度解析


image.png
4.mainApplicationClass??最后我們來看下
duduceMainApplicaitonClass()方法是如何反推導出main方法所在的Class對象的 。通過源碼我們可以看到是通過 StackTrace來實現(xiàn)的 。
1StackTrace:
2我們在學習函數(shù)調用時,都知道每個函數(shù)都擁有自己的棧空間 。
3一個函數(shù)被調用時,就創(chuàng)建一個新的??臻g 。那么通過函數(shù)的嵌套調用最后就形成了一個函數(shù)調用堆棧
??StackTrace其實就是記錄了程序方法執(zhí)行的鏈路 。通過Debug方式可以更直觀的來呈現(xiàn) 。
springboot源碼怎么看 springboot源碼深度解析


image.png
??那么相關的調用鏈路我們都可以獲取到,剩下的就只需要獲取每鏈路判斷執(zhí)行的方法名稱是否是 main就可以了 。
springboot源碼怎么看 springboot源碼深度解析


image.png
??好了到此相關的4個核心步驟就給大家分析完了,希望對大家能有所幫助哦!
以上就是愛惜日網(wǎng)?springboot源碼怎么看(springboot源碼深度解析)的相關內容了,更多精彩請關注作者:愛惜日知識
聲明:本文由愛惜日網(wǎng)【創(chuàng)業(yè)者資源平臺】作者編輯發(fā)布,更多技術關注愛惜日技術!

推薦閱讀