久久一区二区三区超碰国产精品,亚洲人成在线网站,国产在线精品一区免费香蕉,国产精品免费电影

歡迎您訪問IOC文件配置的系列之二:控制反轉!

IOC文件配置的系列之二:控制反轉

更新時間:2024-05-03 10:09:13作者:佚名

前言

我最近寫的系列文章得到了很多讀者的好評,也有讀者希望我多寫這方面的文章。 甚至有讀者私信我,問我如何閱讀源碼。 為此,我打算寫一系列的源碼解讀來回饋一直支持我的粉絲們。

不知道你是否有以下經歷:

源代碼非常復雜。 說實話,這種文章很難寫。 很難解釋清楚。 寫完之后會很長。 讀者可能沒有耐心讀下去,讀完后很容易忘記。

我打算采用圖文結合的方式,去其糟粕,只解讀一些精華部分,讓讀者在閱讀源碼時有一個清晰的思路,不至于迷失方向。 最重要的是,看完之后你能記住很多關鍵流程。

在龐大的系統中,IOC(控制反轉)貫穿始終,其作用不言而喻。 我們先從IOC開始,介紹一下它的主要流程,給有需要的朋友一些指導。

入口

容器的頂層接口是:,但是我們使用更多的是它的子接口:。

通常,如果我們想手動初始化一個通過xml文件配置的容器,代碼如下:

ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");User user = (User)applicationContext.getBean("name");

如果想手動初始化通過配置類配置的容器,代碼如下:

AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext(Config.class);User user = (User)applicationContext.getBean("name");

這兩個類應該是最常見的入口,但卻殊途同歸。 最終他們會調用一個方法,這才是容器初始化的真正入口。

順便說一句,這些并不是唯一調用方法的兩個類。 我們用一張圖來整體理解一下:

雖然調用方法的類有很多,但我還是決定以類為例來給大家講解一下,因為它足夠經典,而且相對來說難度不那么大。

我再說一遍,由于源代碼量巨大,即使我能一口氣讀完,恐怕你也沒有耐心讀下去。 所以我會采用Hello, Me的方式,忽略一些細節,只關注關鍵點。 如果有對某些細節感興趣的同學,請加我微信與我交流,或者關注我后續的文章,會詳細講解。

方法

該方法是ioc的真正入口,負責初始化容器。

既然這個方法的作用是初始化容器,為什么這個方法不叫init呢?

答案很簡單,因為它不僅僅被調用一次。

類中的run方法會調用該方法,該方法會調用一次該方法。

類中的方法會調用類中的run方法。 該方法也將被調用一次。

這就是為什么項目中引入該方法會被調用兩次的原因。

類中的ntext方法會調用該方法,該方法會調用一次該方法,但是會提前判斷容器是否被激活。

所以這里的意思是重建。

好了,不廢話了。 以下是需要重點關注的關鍵步驟:

其實上圖中乍一看似乎方法很多,但真正核心的方法卻并不多。 我主要講一下最重要的幾個:

解析xml配置文件

ry方法會解析xml bean配置,生成對象,并注冊到容器中(說白了就是在很多map集合中)。

經過幾層調用(不詳述,很簡單),就會調用該類的方法:

該方法將循環(.xml 文件路徑)ioc是什么意思,調用另一個方法,并逐個解析每個文件。

經過一系列運算后,會轉化為和,然后轉化為對象進行分析。

解析xml文件時,需要判斷它是默認標簽還是自定義標簽。 處理邏輯不同:

只有 4 個默認標簽:

對應的處理方法為:

注意:,,等都是自定義標簽。

從上圖中處理標簽的n方法開始,經過一系列的調用,最終會轉入類的n方法。

該方法包含關鍵步驟:解析元素生成和注冊。

自定義屬性的內容很有趣,這里不再贅述。 現在用得不多了。 有興趣的同學可以加我微信,私聊我。

產生

讓我們重點關注它是如何生成的。

上面的方法會調用類方法:

一個標簽將對應一個對象。

該方法會調用同名的重載方法:n,真正創建對象,并解析一系列參數來填充對象:

其實實際的創建邏輯很簡單,直接new一個對象:

真正的復雜性在于前面屬性的解析和賦值。

登記

通過解析上面的xml文件生成了很多對象。 接下來,您需要將對象注冊到容器中,以便容器可以初始化bean。

Utils類中的on方法非常簡單,只有兩個過程:

我們先看一下類的on方法是如何注冊的:

接下來我們看看類方法是如何注冊alias別名的:

這樣就可以通過多個不同的別名找到同一個名字,然后再通過名字找到。

修訂

上面的對象已經注冊到容器中了。 接下來,如果我想修改注冊的對象該怎么辦呢?

通過方法中的方法修改對象。

經過一系列的調用,最終會到達類方法:

流程看上去很長,但實際上邏輯比較簡單,主要是處理和ssor。

它本身就是一個特殊的ssor。 它還會執行 ssor 的邏輯,但它只是添加了一個額外的方法。

也許最重要的是,它處理@注釋。

登記

處理完前面的邏輯后,該方法就會調用注冊。 它的功能非常強大,將在后面的文章中詳細講解。

經過一系列的調用,最終會到達類方法:

注意ioc是什么意思英語作文,這一步只是注冊,實際使用稍后再說。

總結

之前主要介紹過:

容器初始化的入口點

該方法的主要流程

解析xml配置文件

產生

登記

修訂

登記

以上內容只是容器初始化的前期準備工作。 先給大家預覽一下,真正的表演在后面:實例化bean、依賴注入、初始化bean、調用等等。

親愛的朋友們,展開公眾號右上角“設為星標”即可立即看到我的好文章。 它純粹是提供信息的。 錯過實在可惜。

為您推薦

(一周新看點)2017級新生開學典禮暨軍訓動員大會舉行

9月20日下午,由洛陽師范學院副校長宋文獻任組長,省教育廳發展規劃處副處長楊冰、中原工學院發展規劃處處長高斌、鄭州輕工業學院教務處處長張東初、河南城建學院教務處處長趙安芳等組成的專家考評組來到我校,就學校河南省示范性應用技術類型本科院校建設工作進行檢查指導。

2024-05-03 09:23

純屬咎由自取!高考移民也不是對其他考生的不公平

還好學校火眼金睛,及時發現這一問題,并給該考生郵寄了退學通知書,要是讓這名學生順利入學且順利畢業的話,豈不是對其他考生的不公平?而且考生們千萬不要以為能順利入學就行了,即使已經順利拿到畢業證書,高考移民的身份一旦被發現,畢業證書和學位證書就會立即被撤銷。

2024-05-03 09:15

2022年度全國會計專業技術中級會計資格考試延期考試公告

財政部辦公廳9月29日發布《關于2022年度全國會計專業技術中級資格考試延期考試安排及有關事項的通知》(財辦會〔2022〕33號),定于2022年12月統一組織一次中級會計資格延期考試,考試采用無紙化方式。“全國會計資格評價網”公布2022年度中級會計資格延期考試成績。

2024-05-03 08:30

石家莊市發布高考英語口試安排通知6月16日至17日

#2021年河北石家莊普通高校招生外語口試工作的通知#】?無憂考網從石家莊市教育局了解到,2021年河北石家莊普通高校招生外語口試工作的通知已經發布,為方便考生了解情況,現將有關事宜通知如下:今年我市英語口試安排在石家莊學院進行。(附:石家莊市2021年高考英語口試報名繳費系統使用說明)

2024-05-03 08:16

千呼萬喚始出來,高考分數線終于公布了

千呼萬喚始出來,高考分數線終于公布了,全國率先公布省份是使用全國一卷的河北省,于昨日晚上公布了2020高考河北分數線并夜里凌晨可以查詢成績

2024-05-03 07:16

2023杭州各學校錄取分數線匯總2023年杭州市區

2023杭州各學校錄取分數線匯總2023杭州余杭臨平中考各高中錄取批次分數線匯總(持續更新)2023杭州蕭山區中考第三批錄取分數線公布2023杭州中考錄取各類高中學校分數線匯總表一覽2023杭州蕭山區高中招生第二批錄取分數線公布

2024-05-02 21:22

加載中...
主站蜘蛛池模板: 吴旗县| 峨眉山市| 四会市| 武山县| 全州县| 旌德县| 南昌市| 土默特左旗| 永顺县| 新闻| 洛隆县| 夏邑县| 阿拉善左旗| 兴城市| 中阳县| 夏邑县| 桑日县| 古丈县| 防城港市| 正宁县| 康平县| 娱乐| 白水县| 正宁县| 清新县| 商都县| 曲水县| 布尔津县| 三穗县| 大渡口区| 阿拉善盟| 鞍山市| 息烽县| 万载县| 游戏| 绍兴县| 东源县| 陕西省| 赫章县| 剑阁县| 平江县|