【Spring】8.解析配置類-創(chuàng)新互聯(lián)

目錄

創(chuàng)新互聯(lián)公司專注于屏邊網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗。 熱誠為您提供屏邊營銷型網(wǎng)站建設(shè),屏邊網(wǎng)站制作、屏邊網(wǎng)頁設(shè)計、屏邊網(wǎng)站官網(wǎng)定制、微信平臺小程序開發(fā)服務(wù),打造屏邊網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供屏邊網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。

解析配置類

總結(jié)一下


解析配置類

解析配置類流程圖:https://www.processon.com/view/link/5f9512d5e401fd06fda0b2dd

解析配置類思維腦圖:https://www.processon.com/view/link/614c83cae0b34d7b342f6d14

  1. 在啟動Spring時,需要傳入一個AppConfig.class給ApplicationContext,ApplicationContext 會根據(jù)AppConfig類封裝為一個BeanDefinition,這種BeanDefinition我們把它稱為配置類 BeanDefinition。

  2. ConfigurationClassPostProcessor中會把配置類BeanDefinition取出來

  3. 構(gòu)造一個ConfigurationClassParser用來解析配置類BeanDefinition,并且會生成一個配置類對象ConfigurationClass

  4. 如果配置類上存在@Component注解,那么解析配置類中的內(nèi)部類(這里有遞歸,如果內(nèi)部類 也是配置類的話)

  5. 如果配置類上存在@PropertySource注解,那么則解析該注解,并得到PropertySource對象, 并添加到environment中去

  6. 如果配置類上存在@ComponentScan注解,那么則解析該注解,進(jìn)行掃描,掃描得到一系列的 BeanDefinition對象,然后判斷這些BeanDefinition是不是也是配置類BeanDefinition(只要存 在@Component注解就是配置類,所以基本上掃描出來的都是配置類),如果是則繼續(xù)解析該 配置類,(也有遞歸),并且會生成對應(yīng)的ConfigurationClass

  7. 如果配置類上存在@Import注解,那么則判斷Import的類的類型:

    1. 如果是ImportSelector,那么調(diào)用執(zhí)行selectImports方法得到類名,然后在把這個類當(dāng)做

      配置類進(jìn)行解析**(也是遞歸)**

    2. 如果是ImportBeanDefinitionRegistrar,那么則生成一個ImportBeanDefinitionRegistrar 實例對象,并添加到配置類對象中(ConfigurationClass)的 importBeanDefinitionRegistrars屬性中。

  8. 如果配置類上存在@ImportResource注解,那么則把導(dǎo)入進(jìn)來的資源路徑存在配置類對象中的 importedResources屬性中。

  9. 如果配置類中存在@Bean的方法,那么則把這些方法封裝為BeanMethod對象,并添加到配置 類對象中的beanMethods屬性中。

  10. 如果配置類實現(xiàn)了某些接口,則看這些接口內(nèi)是否定義了@Bean的默認(rèn)方法

  11. 如果配置類有父類,則把父類當(dāng)做配置類進(jìn)行解析

  12. AppConfig這個配置類會對應(yīng)一個ConfigurationClass,同時在解析的過程中也會生成另外的一 些ConfigurationClass,接下來就利用reader來進(jìn)一步解析ConfigurationClass

    1. 如果ConfigurationClass是通過@Import注解導(dǎo)入進(jìn)來的,則把這個類生成一個 BeanDefinition,同時解析這個類上@Scope,@Lazy等注解信息,并注冊BeanDefinition

    2. 如果ConfigurationClass中存在一些BeanMethod,也就是定義了一些@Bean,那么則解 析這些@Bean,并生成對應(yīng)的BeanDefinition,并注冊

    3. 如果ConfigurationClass中導(dǎo)入了一些資源文件,比如xx.xml,那么則解析這些xx.xml文 件,得到并注冊BeanDefinition

    4. 如果ConfigurationClass中導(dǎo)入了一些ImportBeanDefinitionRegistrar,那么則執(zhí)行對應(yīng) 的registerBeanDefinitions進(jìn)行BeanDefinition的注冊

總結(jié)一下

1. 解析AppConfig類,生成對應(yīng)的ConfigurationClass

2. 再掃描,掃描到的類都會生成對應(yīng)的BeanDefinition,并且同時這些類也是ConfigurationClass

3. 再解析ConfigurationClass的其他信息,比如@ImportResource注解的處理,@Import注解的 處理,@Bean注解的處理

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧

網(wǎng)站標(biāo)題:【Spring】8.解析配置類-創(chuàng)新互聯(lián)
當(dāng)前地址:http://muchs.cn/article28/dchpcp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供建站公司、網(wǎng)站導(dǎo)航、App設(shè)計網(wǎng)站設(shè)計、企業(yè)網(wǎng)站制作、網(wǎng)站改版

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)