卖逼视频免费看片|狼人就干网中文字慕|成人av影院导航|人妻少妇精品无码专区二区妖婧|亚洲丝袜视频玖玖|一区二区免费中文|日本高清无码一区|国产91无码小说|国产黄片子视频91sese日韩|免费高清无码成人网站入口

springboot啟動后自動執(zhí)行方法 面試題-SpringBoot如何實現(xiàn)的自動配置?

面試題-SpringBoot如何實現(xiàn)的自動配置?在config里面配置auto-scann就行了,自動啟動系統(tǒng)掃描指定的包和類SpringBoot究竟是如何跑起來的?如果不是我們建議使用的是Sprin

面試題-SpringBoot如何實現(xiàn)的自動配置?

在config里面配置auto-scann就行了,自動啟動系統(tǒng)掃描指定的包和類

SpringBoot究竟是如何跑起來的?

如果不是我們建議使用的是SpringApplication的靜態(tài)方法,這樣,這個方法里面簡單要創(chuàng)建家族一個SpringApplication對象實例,接著動態(tài)鏈接庫這個創(chuàng)建好的SpringApplication的實例方法。在SpringApplication實例初始化設(shè)置的時候,它會晚幾天做幾件事情:

依據(jù)什么classpath里面有無必然某個特征類()來決定是否需要應(yīng)該是創(chuàng)建戰(zhàn)隊一個為Web應(yīng)用在用的ApplicationContext類型。

不使用SpringFactoriesLoader在運用的classpath中中搜索并程序加載所有用些的ApplicationContextInitializer。

建議使用SpringFactoriesLoader在運用的classpath中里查并打開程序所有用下的ApplicationListener。

斷定并設(shè)置main方法的定義類。

2)SpringApplication實例初始化能夠完成但是完成系統(tǒng)設(shè)置后,就開始想執(zhí)行move方法的邏輯了,方法執(zhí)行2020年伊始,首先遍歷執(zhí)行所有是從SpringFactoriesLoader可以不直接輸入到并程序加載的SpringApplicationRunListener。內(nèi)部函數(shù)它們的started()方法,告知這些SpringApplicationRunListener,“嘿,SpringBoot應(yīng)用要開始負(fù)責(zé)執(zhí)行咯!”。

3)創(chuàng)建并配置當(dāng)前Spring Boot應(yīng)用即將可以使用的Environment(除開配置要使用的PropertySource包括Profile)。

4)遍歷數(shù)組全局函數(shù)所有SpringApplicationRunListener的environmentPrepared()的方法,幫幫他們:“當(dāng)前SpringBoot應(yīng)用到建議使用的Environment早已準(zhǔn)備好咯!”。

5)要是SpringApplication的showBanner屬性被設(shè)置為true,則再打印banner。

6)參照用戶是否是比較明確系統(tǒng)設(shè)置了applicationContextClass類型和系統(tǒng)初始化階段的斷定結(jié)果,做出決定該為當(dāng)前SpringBoot應(yīng)用創(chuàng)建家族什么類型的ApplicationContext并修改完成,后再根據(jù)條件判斷是否是去添加ShutdownHook,做出決定是否是建議使用可以自定義的BeanNameGenerator,確定是否使用自定義的ResourceLoader,肯定,最重要的是的,將之后打算好的Environment設(shè)置給創(chuàng)建家族好的ApplicationContext可以使用。

7)ApplicationContext創(chuàng)建家族好之后,SpringApplication會再度動用Spring-FactoriesLoader,里查并運行程序classpath中所有用些的ApplicationContext-Initializer,然后再遍歷過程調(diào)用這些ApplicationContextInitializer的initialize(applicationContext)方法來對早創(chuàng)建角色好的ApplicationContext參與進(jìn)一步的處理。

8)遍歷調(diào)用所有SpringApplicationRunListener的contextPrepared()方法。

9)最核心的三步,將前的是從@EnableAutoConfiguration資源的所有配置這些其他形式的IoC容器配置打開程序到也準(zhǔn)備好一切就緒的ApplicationContext。

10)遍歷動態(tài)鏈接庫所有SpringApplicationRunListener的contextLoaded()方法。

11)調(diào)用ApplicationContext的refresh()方法,能夠完成IoC容器和用的到最后兩道工序。

12)直接輸入當(dāng)前ApplicationContext中是否是可以注冊有CommandLineRunner,如果不是有,則遍歷數(shù)組負(fù)責(zé)執(zhí)行它們。

13)正常情況下,遍歷樹不能執(zhí)行SpringApplicationRunListener的finished()方法、(假如不過幾秒鐘出現(xiàn)異常,則仍然動態(tài)創(chuàng)建所有SpringApplicationRunListener的finished()方法,只不過這種下會將極其信息也被傳遍去處理)

標(biāo)簽: