日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 前端技术 > javascript >内容正文

javascript

Spring IoC容器总结(未完)

發(fā)布時(shí)間:2023/12/20 javascript 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spring IoC容器总结(未完) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

  在面向?qū)ο笙到y(tǒng)中,對(duì)象封裝了數(shù)據(jù)和對(duì)數(shù)據(jù)的處理,對(duì)象的依賴關(guān)系常常體現(xiàn)在對(duì)數(shù)據(jù)和方法的依賴上。這些依賴關(guān)系可以通過(guò)把對(duì)象的依賴注入交給框架或IOC容器來(lái)完成,這種從具體對(duì)象手中交出控制的做法是非常有價(jià)值的,它可以在解耦代碼的同時(shí)提高代碼的可測(cè)試性。

  在Spring中,IoC容器是實(shí)現(xiàn)這個(gè)模式的載體,它可以在對(duì)象生成或初始化時(shí)直接將數(shù)據(jù)注入到對(duì)象中,也可以通過(guò)將對(duì)象引用注入到對(duì)象數(shù)據(jù)域中的方式來(lái)注入對(duì)方法調(diào)用的依賴。setter注入和構(gòu)造器注入是主要的注入方式。

  IoC容器系列的設(shè)計(jì)與實(shí)現(xiàn):BeanFactory和ApplicationContext

  

  1、從接口BeanFactoryHierarchicalBeanFactory,再到ConfigurableBeanFactory,是一個(gè)主要的BeanFactory設(shè)計(jì)路徑。這個(gè)接口定義中,包括了getBean()這樣的IOC容器的基本方法,通過(guò)這個(gè)方法可以從容器中取得Bean。ConfigurableBeanFactory接口中,主要定義了一些對(duì)BeanFactory的配置功能,比如通過(guò)setParentBeanFactory()設(shè)置雙親IoC容器,通過(guò)addBeanPostProcessor配置Bean后置處理等等。

  2、以ApplicationContext應(yīng)用上下文為核心的接口設(shè)計(jì),主要接口設(shè)計(jì)有,從BeanFactory到ListableBeanFactory,再到ApplicationContext,再到我們常用的WebApplicationContext或者ConfigurableApplicationContext接口。我們常用的應(yīng)用上下文基本上都是ConfigurableApplicationConntext或者WebApplicationContext的實(shí)現(xiàn)。

  BeanFactory接口設(shè)計(jì)了getBean方法,這個(gè)方法是使用IoC容器API的主要方法,通過(guò)這個(gè)方法,可以取得IoC容器中管理的Bean。如果需要在獲取Bean時(shí)對(duì)Bean進(jìn)行類型檢查,則可用帶參數(shù)的方法。Object getBean(String name,Class requiredType);

  接口清單:

  

那么Spring中XML的讀取功能是怎樣實(shí)現(xiàn)的呢?

  構(gòu)造XmlBeanFactory這個(gè)IoC容器時(shí),需要指定BeanDefinition的信息來(lái)源,而這個(gè)信息來(lái)源需要封裝成Spring中的Resource類來(lái)給出。Resource類是Spring用來(lái)封裝I/O操作的類。

  IoC容器的初始化過(guò)程

? ? ? IoC的啟動(dòng)包括BeanDefinition的Resource定位、注入和注冊(cè)三個(gè)基本過(guò)程。

  第一個(gè)過(guò)程是Resource定位過(guò)程。這個(gè)Resource定位指的是BeanDefinition的資源定位,它由ResourceLoader通過(guò)統(tǒng)一的Resource接口來(lái)完成。

  第二個(gè)過(guò)程是BeanDefinition的載入。這個(gè)載入過(guò)程是把用戶定義好的Bean表示成IoC容器內(nèi)部的數(shù)據(jù)結(jié)構(gòu),而這個(gè)容器內(nèi)部的數(shù)據(jù)結(jié)構(gòu)就是BeanDefinition。

  第三個(gè)過(guò)程是向IoC容器注冊(cè)這些BeanDefinition的過(guò)程。在IoC容器內(nèi)部將BeanDefinition注入到一個(gè)HashMap中去,IoC容器就是通過(guò)這個(gè)HashMap來(lái)持有這些BeanDefinition數(shù)據(jù)的。

  Spring IoC的設(shè)計(jì)中,Bean定義的載入和依賴注入是兩個(gè)獨(dú)立的過(guò)程。依賴注入一般發(fā)生在應(yīng)用第一次通過(guò)getBean向容器索取Bean的時(shí)候。但有個(gè)例外,就像我們向某個(gè)Bean設(shè)置了lazyinit屬性,那么這個(gè)Bean的依賴注入在IoC容器初始化時(shí)就預(yù)先完成了,而不需要等到整個(gè)初始化完成以后,第一次使用getBean時(shí)才會(huì)觸發(fā)。

轉(zhuǎn)載于:https://www.cnblogs.com/yangsy0915/p/5918290.html

總結(jié)

以上是生活随笔為你收集整理的Spring IoC容器总结(未完)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。