springBoot自動配置的全過程
什么是自動配置
以前整合spring + mybatis框架時候,需要加很多的bean,
比如說sqlSessionFactory等等現(xiàn)在springboot幫我們干了,
我們只需要引入對應(yīng)的starter就可以了。
springBoot可以幫我們配置好了一些bean. 如mysql, mogondb相關(guān)操作等等,目前有100多個。
不需要我們一個一個的import:
單個導(dǎo)入效率太低了。
如何實現(xiàn)批量導(dǎo)入?
@import(AutoConfigurationImportSelector.class)
通過AutoConfigurationImportSelector.selectImports方法導(dǎo)入配置類集合。
當(dāng)然其他jar里面也可以有配置類,不一定都會在starter里面。
需要其他jar里面主動告訴springBoot,說明是配置類:文件路徑為meta-inf/spirng.factories
尋找步驟
1 jar找文件
meta-inf/spirng.factories
2 找key
3 values是配置類
4 去重
5 classLoader加載類
找到自動配置類名字
6 過濾無關(guān)的配置類
先看依賴,看pom里面是否有,然后再看是否有關(guān)鍵類。
有135個配置類,無關(guān)配置類很多,
通過spring-autoconfigure-metadata.propertes文件
先其他jvm, 在啟動spring容器,導(dǎo)致速度比較慢。
其他
springBoot3.0后,使用了gravVM技術(shù),在編譯時候就開始把bean掃描出來。
后面啟動時候直接注冊加載bean,不需要再進行掃描
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
java保證對象在內(nèi)存中唯一性的實現(xiàn)方法
這篇文章主要介紹了java如何保證對象在內(nèi)存中的唯一性,如果創(chuàng)建多個對象的話,可能會引發(fā)出各種各樣的問題,這時,就需要我們保證這個對象在內(nèi)存中的唯一性,需要的朋友可以參考下2019-06-06解決java中mybatis報錯:org.apache.ibatis.binding.BindingException:
這篇文章主要介紹了解決java中mybatis報錯:org.apache.ibatis.binding.BindingException:Invalid bound statement(not found):xx問題,具有很好的參考價值,希望對大家有所幫助2024-03-03