欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

介紹下Java Spring的核心接口,容器中Bean的實(shí)例化

 更新時(shí)間:2021年09月07日 09:19:08   作者:Code楚天  
這篇文章主要介紹了Spring核心接口,容器中bean的實(shí)例化過(guò)程解析及完整代碼示例,簡(jiǎn)單分析實(shí)例化bean過(guò)程并且分享了相關(guān)實(shí)例,具有一定借鑒價(jià)值,需要的朋友可以參考下

Spring的核心接口

ApplicationContext接口

繼承了BeanFactory并且提供了加載資源文件的方法

ApplicationContext其實(shí)就是一個(gè)容器,ApplicationContext的實(shí)例其實(shí)就是容器對(duì)象,這個(gè)容器對(duì)象在實(shí)例化過(guò)程中其實(shí)就是容器初始化的過(guò)程

下面這幾個(gè)都是ApplicationContext接口的實(shí)現(xiàn)類

ClasspathXmlApplicationContext加載Classpath下的xml格式的配置文件,初始化這樣的實(shí)例

FileSystemXmlApplicationContext加載文件路徑下的xml文件

AnnotationConfigApplicationContext注解配置

SpringMVC: WebApplicationContext 這個(gè)還沒(méi)有引入對(duì)應(yīng)的依賴所以暫時(shí)看不到 

 

 BeanFactory接口

生產(chǎn)bean,生產(chǎn)全部bean,容器。ApplicationContext接口繼承了BeanFactory接口

也就是說(shuō)BeanFactory接口實(shí)際上提供了Bean獲得組件  管理組件方法

Spring容器中Bean的實(shí)例化

Spring的核心就是控制反轉(zhuǎn),它要控制實(shí)例的生成(實(shí)例化)

實(shí)例化主要有以下幾種方式

構(gòu)造方法

無(wú)參構(gòu)造方法

默認(rèn)使用的就是無(wú)參構(gòu)造方法,最常用的

先貼出來(lái)xml文件,其中如果有參構(gòu)造方法把無(wú)參構(gòu)造方法覆蓋掉的話,就需要constructor-arg標(biāo)簽來(lái)告知,其中的name標(biāo)簽就是對(duì)應(yīng)的有參構(gòu)造方法的參數(shù)名,而無(wú)參構(gòu)造方法想要給屬性做賦值就只需要property子標(biāo)簽即可

有參構(gòu)造方法

 測(cè)試后我們發(fā)現(xiàn)

 

工廠

靜態(tài)工廠

工廠里的生產(chǎn)方法是靜態(tài)方法

 注冊(cè)組件

實(shí)例工廠

工廠里的生產(chǎn)方法不是靜態(tài)方法

組件注冊(cè)

我們需要額外注冊(cè)組件,并且要告訴其工廠是誰(shuí) 工廠要使用的方法是什么

 測(cè)試類

 

這里我們發(fā)現(xiàn)雖然都是User 但他們不是同一個(gè)組件

 注意:如果直接去取的話或發(fā)生異常

此時(shí)加個(gè)id再去取出就可以了,

 

方法二:可以使用Map方式,按照類型去取出User組件

 

 

靜態(tài)工廠和實(shí)例工廠在整合一些已有的工具類的時(shí)候,工具類有一些靜態(tài)方法返回某一些實(shí)例而后面要去使用這些實(shí)例,就需要使用靜態(tài)工廠方法注冊(cè)組件

FactoryBean→使用工廠方法

FactoryBean實(shí)際上是個(gè)接口,我們看下它的代碼

 getObject()就是生產(chǎn)方法,其實(shí)就是返回一個(gè)實(shí)例


使用UserFactoryBean的set方法去給User做一個(gè)賦值

 

 注冊(cè)組件

我們的目的是想要通過(guò)FactoryBean獲取到一個(gè)User類型的組件

 通過(guò)FactoryBean注冊(cè)的組件類型:和getObject方法的返回值是相關(guān)的,簡(jiǎn)單來(lái)講就是Spring再檢查注冊(cè)組件的時(shí)候會(huì)檢查組件有沒(méi)有實(shí)現(xiàn)FactoryBean接口如果有實(shí)現(xiàn)就會(huì)去找到里面的getObject方法,把getObject返回的實(shí)例注冊(cè)為容器中的組件

面試題:

BeanFactory和FactoryBean區(qū)別

都可以注冊(cè)組件

BeanFactory:生產(chǎn)的是全部組件

FactoryBean:注冊(cè)的特定類型的組件

總結(jié)

本篇文章就到這里了,希望能夠給你帶來(lái)幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!

  • 詳解Java實(shí)踐之適配器模式

    詳解Java實(shí)踐之適配器模式

    在計(jì)算機(jī)編程中,適配器模式(有時(shí)候也稱包裝樣式或者包裝)將一個(gè)類的接口適配成用戶所期待的。一個(gè)適配允許通常因?yàn)榻涌诓患嫒荻荒茉谝黄鸸ぷ鞯念惞ぷ髟谝黄?,做法是將類自己的接口包裹在一個(gè)已存在的類中
    2021-06-06
  • Springboot指定掃描路徑的實(shí)現(xiàn)示例

    Springboot指定掃描路徑的實(shí)現(xiàn)示例

    本文主要介紹了Springboot指定掃描路徑的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-05-05
  • java正則表達(dá)式判斷強(qiáng)密碼和隨機(jī)生成強(qiáng)密碼代碼示例

    java正則表達(dá)式判斷強(qiáng)密碼和隨機(jī)生成強(qiáng)密碼代碼示例

    這篇文章主要給大家介紹了關(guān)于java正則表達(dá)式判斷強(qiáng)密碼和隨機(jī)生成強(qiáng)密碼的相關(guān)資料,最近需要一個(gè)密碼強(qiáng)度正則表達(dá)式在用戶注冊(cè)時(shí)校驗(yàn)用戶密碼強(qiáng)度,需要的朋友可以參考下
    2023-08-08
  • SpringBoot?Redis清除所有的key的實(shí)現(xiàn)方法

    SpringBoot?Redis清除所有的key的實(shí)現(xiàn)方法

    本文主要介紹了SpringBoot?Redis清除所有的key的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05
  • Java中Stream流的常用方法代碼示例

    Java中Stream流的常用方法代碼示例

    這篇文章主要介紹了Java中Stream流的常用方法代碼示例,Stream類中每一個(gè)方法都對(duì)應(yīng)集合上的一種操作,將真正的函數(shù)式編程引入到Java中,能 讓代碼更加簡(jiǎn)潔,極大地簡(jiǎn)化了集合的處理操作,提高了開(kāi)發(fā)的效率和生產(chǎn)力,需要的朋友可以參考下
    2023-10-10
  • Java實(shí)現(xiàn)數(shù)據(jù)更新和事件通知的觀察者模式

    Java實(shí)現(xiàn)數(shù)據(jù)更新和事件通知的觀察者模式

    Java觀察者模式是一種行為型設(shè)計(jì)模式,用于實(shí)現(xiàn)對(duì)象間的一對(duì)多依賴關(guān)系。當(dāng)一個(gè)對(duì)象的狀態(tài)發(fā)生改變時(shí),它的所有依賴對(duì)象都會(huì)收到通知并自動(dòng)更新。觀察者模式可以實(shí)現(xiàn)松耦合,增強(qiáng)了系統(tǒng)的可維護(hù)性和可拓展性
    2023-04-04
  • java面試常見(jiàn)問(wèn)題---ConcurrentHashMap

    java面試常見(jiàn)問(wèn)題---ConcurrentHashMap

    ConcurrentHashMap是由Segment數(shù)組結(jié)構(gòu)和HashEntry數(shù)組結(jié)構(gòu)組成。Segment的結(jié)構(gòu)和HashMap類似,是一種數(shù)組和鏈表結(jié)構(gòu),今天給大家普及java面試常見(jiàn)問(wèn)題---ConcurrentHashMap知識(shí),一起看看吧
    2021-06-06
  • IntelliJ IDEA之高效代碼插件RainBow Brackets詳解

    IntelliJ IDEA之高效代碼插件RainBow Brackets詳解

    這篇文章主要介紹了IntelliJ IDEA之高效代碼插件RainBow Brackets詳解,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-12-12
  • Java將Word文檔轉(zhuǎn)換為PDF文件的幾種常用方法總結(jié)

    Java將Word文檔轉(zhuǎn)換為PDF文件的幾種常用方法總結(jié)

    這篇文章主要介紹了Java將Word文檔轉(zhuǎn)換為PDF文件的四種常用方法,分別使用ApachePOI+iText、Aspose.Words?for?Java、Docx4j和JODConverter,這些庫(kù)各有優(yōu)點(diǎn),但在使用時(shí)需要注意庫(kù)與Java環(huán)境的兼容性、安裝所需依賴、轉(zhuǎn)換速度和資源消耗,需要的朋友可以參考下
    2024-10-10
  • 最新評(píng)論