SpringBoot自動(dòng)裝配原理

BFPP:BeanFactoryPostProcessor
BPP:BeanPostProcessor
BDRPP:BeanDefinitionRegistryPostProcessor
1、springboot自動(dòng)裝配是什么,解決了什么問(wèn)題?

  • SpringBoot自動(dòng)裝配就是為了從spring.factories中獲取到需要自動(dòng)裝配的類,并生成相應(yīng)的Bean對(duì)象,然后交給Spring容器進(jìn)行管理。
    2、自動(dòng)裝配實(shí)現(xiàn)的原理
  • 當(dāng)啟動(dòng)springboot應(yīng)用程序的時(shí)候,會(huì)先創(chuàng)建SpringApplication的對(duì)象,在對(duì)象的構(gòu)造方法中會(huì)進(jìn)行某些參數(shù)的初始化工作,最主要的是判斷當(dāng)前應(yīng)用程序的類型以及初始化器和監(jiān)聽(tīng)器,在這個(gè)過(guò)程中會(huì)加載整個(gè)應(yīng)用程序中的spring.factories文件,將文件的內(nèi)容放到緩存對(duì)象中,方便后續(xù)獲取。
  • SpringApplication對(duì)象創(chuàng)建完成后,開(kāi)始執(zhí)行run方法,來(lái)完成整個(gè)啟動(dòng)過(guò)程,啟動(dòng)過(guò)程中最主要的有兩個(gè)方法,第一個(gè)prepareContext,第二個(gè)交refreshContext,在這兩個(gè)關(guān)鍵步驟中完成了自動(dòng)裝配的核心功能,前面的處理邏輯包含了上下文對(duì)象的創(chuàng)建,banner的打印,異常報(bào)告器等各個(gè)準(zhǔn)備工作,方便后續(xù)來(lái)進(jìn)行調(diào)用。
  • 在prepareContext方法中主要完成的是對(duì)上下文對(duì)象初始化操作,包括屬性值的設(shè)置,比如環(huán)境對(duì)象,在整個(gè)過(guò)程中有一個(gè)非常重要的方法,叫做load,load方法主要完成一件事,將當(dāng)前去啟動(dòng)類作為一個(gè)benDefinition注冊(cè)到registry中,方便后續(xù)在進(jìn)行BeanFactoryPostProcessor調(diào)用執(zhí)行的時(shí)候,找到對(duì)應(yīng)的主類,來(lái)完成@SpringBootApplication,@EnableAutoConfiguration等注解的解析工作。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容