国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Spring Framework的核心:IoC容器的實(shí)現(xiàn)(1)

這篇具有很好參考價(jià)值的文章主要介紹了Spring Framework的核心:IoC容器的實(shí)現(xiàn)(1)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

Spring Framework的核心:IoC容器的實(shí)現(xiàn)(1),系統(tǒng)SSM框架學(xué)習(xí)——精通Spring,spring,數(shù)據(jù)庫(kù),java


Spring Framework的核心:IoC容器的實(shí)現(xiàn)(1),系統(tǒng)SSM框架學(xué)習(xí)——精通Spring,spring,數(shù)據(jù)庫(kù),java


個(gè)人名片:

??作者簡(jiǎn)介:一名大二在校生
?????個(gè)人主頁(yè):落798.
??個(gè)人WeChat:落798.
???系列專欄:零基礎(chǔ)學(xué)java ----- 重識(shí)c語(yǔ)言 ---- 計(jì)算機(jī)網(wǎng)絡(luò)【Spring技術(shù)內(nèi)幕】
??每日一句:看淡一點(diǎn)在努力,你吃的苦會(huì)鋪成你要的路!


2.1 Spring IoC容器概述

Spring 容器是 Spring 框架的核心。 容器將創(chuàng)建對(duì)象、將它們連接在一起、配置它們并管理它們從創(chuàng)建到銷毀的完整生命周期。 Spring 容器使用 DI 管理構(gòu)成應(yīng)用程序的組件。 這些對(duì)象稱為 Spring Bean。

容器通過(guò)讀取提供的配置元數(shù)據(jù)來(lái)獲取關(guān)于要實(shí)例化、配置和組裝哪些對(duì)象的指令。 配置元數(shù)據(jù)可以由 XML、Java 注解或 Java 代碼表示。 下圖展示了 Spring 工作原理的高級(jí)視圖。 Spring IoC 容器利用 Java POJO 類和配置元數(shù)據(jù)來(lái)生成一個(gè)完全配置和可執(zhí)行的系統(tǒng)或應(yīng)用程序。

Spring Framework的核心:IoC容器的實(shí)現(xiàn)(1),系統(tǒng)SSM框架學(xué)習(xí)——精通Spring,spring,數(shù)據(jù)庫(kù),java
Spring IoC負(fù)責(zé)創(chuàng)建對(duì)象、管理對(duì)象(通過(guò)依賴注入(DI)、裝配對(duì)象、配置對(duì)象,并且管理這些對(duì)象的整個(gè)生命周期。

其實(shí)IoC包括依賴查找(DL)和依賴注入(DI);只不過(guò)DL因?yàn)橛星秩胄?(它需要用戶自己去是使用 API 進(jìn)行查找資源和組裝對(duì)象),已經(jīng)被拋棄。所以現(xiàn)在提到IoC,更多的想到的就是依賴注入(DI)了。

Spring Framework的核心:IoC容器的實(shí)現(xiàn)(1),系統(tǒng)SSM框架學(xué)習(xí)——精通Spring,spring,數(shù)據(jù)庫(kù),java

  • IOC: Spring 反向控制應(yīng)用程序需要的資源。

  • DI: 應(yīng)用程序依賴Spring為其提供資源。

其中的DI—Dependency Injection,即“依賴注入”:組件之間依賴關(guān)系由容器在運(yùn)行期決定,形象的說(shuō),即由容器動(dòng)態(tài)的將某個(gè)依賴關(guān)系注入到組件之中。依賴注入的目的并非為軟件系統(tǒng)帶來(lái)更多功能,而是為了提升組件重用的頻率,并為系統(tǒng)搭建一個(gè)靈活、可擴(kuò)展的平臺(tái)。通過(guò)依賴注入機(jī)制,我們只需要通過(guò)簡(jiǎn)單的配置,而無(wú)需任何代碼就可指定目標(biāo)需要的資源,完成自身的業(yè)務(wù)邏輯,而不需要關(guān)心具體的資源來(lái)自何處,由誰(shuí)實(shí)現(xiàn)。

理解DI的關(guān)鍵是:“誰(shuí)依賴誰(shuí),為什么需要依賴,誰(shuí)注入誰(shuí),注入了什么”。
誰(shuí)依賴于誰(shuí):

  • 當(dāng)然是應(yīng)用程序依賴于IoC容器;

為什么需要依賴:

  • 應(yīng)用程序需要IoC容器來(lái)提供對(duì)象需要的外部資源;

誰(shuí)注入誰(shuí):

  • 很明顯是IoC容器注入應(yīng)用程序某個(gè)對(duì)象,應(yīng)用程序依賴的對(duì)象;

注入了什么:

  • 就是注入某個(gè)對(duì)象所需要的外部資源(包括對(duì)象、資源、常量數(shù)據(jù))。

2.1.1IoC容器的依賴反轉(zhuǎn)模式

依賴反轉(zhuǎn)是一種軟件設(shè)計(jì)原則,它使得高層模塊不依賴于低層模塊的具體實(shí)現(xiàn),而是依賴于抽象接口或者抽象類。

在傳統(tǒng)的開發(fā)中,對(duì)象的創(chuàng)建和管理通常由對(duì)象自身負(fù)責(zé),一個(gè)對(duì)象會(huì)直接創(chuàng)建并管理其所依賴的其他對(duì)象。這種情況下,高層模塊對(duì)低層模塊的實(shí)現(xiàn)產(chǎn)生了依賴,導(dǎo)致代碼的耦合度增加。

具體來(lái)說(shuō),Spring的IoC容器將對(duì)象的創(chuàng)建和管理以及對(duì)象間的依賴關(guān)系的處理交給了容器來(lái)完成。開發(fā)人員只需要在配置文件或注解中聲明對(duì)象的依賴關(guān)系,而不需要顯式地去創(chuàng)建對(duì)象或解決對(duì)象之間的依賴。

org.springframework.beansorg.springframework.context 包是Spring Framework的IoC容器的基礎(chǔ)。 BeanFactory 接口提供了一種高級(jí)配置機(jī)制,能夠管理任何類型的對(duì)象。 ApplicationContextBeanFactory 的一個(gè)子接口。它增加了:

  • 更容易與Spring的AOP功能集成
  • Message resource 處理(用于國(guó)際化)
  • 事件發(fā)布
  • 應(yīng)用層的特定上下文,如 WebApplicationContext,用于 web 應(yīng)用

簡(jiǎn)而言之,BeanFactory 提供了配置框架和基本功能,而 ApplicationContext 則增加了更多的企業(yè)特定功能。ApplicationContext 是 BeanFactory 的一個(gè)完整的超集。

在Spring中,構(gòu)成你的應(yīng)用程序的骨干并由Spring IoC容器管理的對(duì)象被稱為Bean。Bean是一個(gè)由Spring IoC容器實(shí)例化、組裝和管理的對(duì)象。否則,Bean只是你的應(yīng)用程序中眾多對(duì)象中的一個(gè)。Bean以及它們之間的依賴關(guān)系都反映在容器使用的配置元數(shù)據(jù)中。

2.1.2 IoC容器的兩種表現(xiàn)形式

容器 描述
Spring BeanFactory 容器 這是為 DI 提供基本支持的最簡(jiǎn)單的容器,由 org.springframework.beans.factory.BeanFactory 接口定義。 Spring 中仍然存在 BeanFactory 及其相關(guān)接口,如BeanFactoryAware、InitializingBeanDisposableBean,目的是為了向后兼容大量與 Spring 集成的第三方框架。
Spring ApplicationContext 容器 此容器添加了更多特定于企業(yè)的功能,例如從屬性文件解析文本消息的能力以及將應(yīng)用程序事件發(fā)布到感興趣的事件偵聽器的能力。 這個(gè)容器由 org.springframework.context.ApplicationContext 接口定義。

2.1.3 IoC容器的介紹和使用:

BeanFactory容器的使用:

這是為 DI 提供基本支持的最簡(jiǎn)單的容器,由 org.springframework.beans.factory.BeanFactory 接口定義。 Spring中仍然存在BeanFactory及其相關(guān)接口,如BeanFactoryAware、InitializingBean、DisposableBean,目的是為了向后兼容大量與Spring集成的第三方框架。

有許多 BeanFactory 接口的實(shí)現(xiàn)直接隨 Spring 提供。 最常用的 BeanFactory 實(shí)現(xiàn)是 XmlBeanFactory 類。 此容器從 XML 文件中讀取配置元數(shù)據(jù),并使用它來(lái)創(chuàng)建完全配置的系統(tǒng)或應(yīng)用程序。

在資源有限的情況下,如移動(dòng)設(shè)備或基于小程序的應(yīng)用程序,BeanFactory 通常是首選。 因此,除非您有充分的理由不這樣做,否則請(qǐng)使用 ApplicationContext。

public static void main(String[] args){
    //ClassPathResource加載在路徑CLASSPATH下可用的xml配置文件
    //XmlBeanFactory負(fù)責(zé)創(chuàng)建并初始化所有對(duì)象即xml文件中的bean
    XmlFactory factory = new XmlBeanFactory(new ClassPathResource("_.xml"));    
    類名 對(duì)象名 =(類名)factory.getBean("_");
}

ApplicationContext 容器的使用:

Application Context 應(yīng)用程序上下文是 Spring 的高級(jí)容器。 與 BeanFactory 類似,它可以加載 bean 定義、將 bean 連接在一起并根據(jù)請(qǐng)求分發(fā) bean。 此外,它還添加了更多特定于企業(yè)的功能,例如從屬性文件解析文本消息的能力以及將應(yīng)用程序事件發(fā)布到感興趣的事件偵聽器的能力。 該容器由 org.springframework.context.ApplicationContext 接口定義。

常用的 ApplicationContext 實(shí)現(xiàn)

  • FileSystemXmlApplicationContext ? 這個(gè)容器從一個(gè) XML 文件中加載 bean 的定義。 這里需要將 XML bean 配置文件的完整路徑提供給構(gòu)造函數(shù)。

  • ClassPathXmlApplicationContext ? 這個(gè)容器從一個(gè) XML 文件中加載 bean 的定義。 這里您不需要提供 XML 文件的完整路徑,但您需要正確設(shè)置 CLASSPATH,因?yàn)榇巳萜骺雌饋?lái)像 CLASSPATH 中的 bean 配置 XML 文件。

  • WebXmlApplicationContext ? 此容器從 Web 應(yīng)用程序中加載包含所有 bean 定義的 XML 文件。

public static void main(String[] args){
    //ApplicationContext接口的實(shí)現(xiàn)類有很多種,這里使用ClassPathXmlApplicationContext
    ApplicationContext app = new ClassPathXmlApplicationContext("_.xml");
    類名 對(duì)象名 =(類名)app.getBean("_");
}

下期預(yù)告: Bean 概述以及如何構(gòu)建和使用容器

一個(gè)Spring IoC容器管理著一個(gè)或多個(gè)Bean。這些Bean是用你提供給容器的配置元數(shù)據(jù)創(chuàng)建的(例如,以XML 定義的形式)。

在容器本身中,這些Bean定義被表示為 BeanDefinition 對(duì)象,它包含(除其他信息外)以下元數(shù)據(jù)。

  • 一個(gè)全路徑類名:通常,被定義的Bean的實(shí)際實(shí)現(xiàn)類。

  • Bean的行為配置元素,它說(shuō)明了Bean在容器中的行為方式(scope、生命周期回調(diào),等等)。

  • 對(duì)其他Bean的引用,這些Bean需要做它的工作。這些引用也被稱為合作者或依賴。

  • 要在新創(chuàng)建的對(duì)象中設(shè)置的其他配置設(shè)置—?例如,pool的大小限制或在管理連接池的Bean中使用的連接數(shù)。

寫在后面??????:

本專欄是自己深入學(xué)習(xí)并結(jié)合Spring技術(shù)內(nèi)幕一經(jīng)典圖書內(nèi)容做出的的心得與總結(jié),將其精簡(jiǎn)編寫成一篇專欄供大家學(xué)習(xí),希望對(duì)新學(xué)習(xí)Spring框架技術(shù)的小伙伴有所幫助。

圖書推薦
Spring Framework的核心:IoC容器的實(shí)現(xiàn)(1),系統(tǒng)SSM框架學(xué)習(xí)——精通Spring,spring,數(shù)據(jù)庫(kù),java


Spring Framework的核心:IoC容器的實(shí)現(xiàn)(1),系統(tǒng)SSM框架學(xué)習(xí)——精通Spring,spring,數(shù)據(jù)庫(kù),java

歡迎添加微信,加入我的核心小隊(duì),請(qǐng)備注來(lái)意

??????????????????????????????文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-612986.html

到了這里,關(guān)于Spring Framework的核心:IoC容器的實(shí)現(xiàn)(1)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Spring 6 IOC容器加載過(guò)程與核心方法refresh源碼淺析

    Spring 6 IOC容器加載過(guò)程與核心方法refresh源碼淺析

    前言:本篇只對(duì)主線核心邏輯進(jìn)行梳理分析,本篇以AnnotationConfigApplicationContext容器為例進(jìn)行切入分析【Spring版本為: v6.0.2】 我們啟動(dòng)容器的時(shí)候,雖然只是new了一個(gè)AnnotationConfigApplicationContext對(duì)象,但是在這個(gè)過(guò)程中spring處理了很多的事情。 創(chuàng)建AnnotationConfigApplicationContext對(duì)象

    2023年04月08日
    瀏覽(23)
  • Spring框架IOC容器和DI依賴注入

    IOC(Invertion Of Control):控制反轉(zhuǎn),使用對(duì)象時(shí),由使用new創(chuàng)建對(duì)象轉(zhuǎn)變?yōu)橛赏獠刻峁?duì)象,此過(guò)程中對(duì)象的創(chuàng)建控制權(quán)由程序轉(zhuǎn)移到外部的思想稱之為控制反轉(zhuǎn). DI(Dependency Injection):依賴注入,在容器中建立bean與bean之間的關(guān)系的過(guò)程,稱之為依賴注入 pom.xml依賴引入 BookDao BookDaoImpl Book

    2023年04月09日
    瀏覽(25)
  • [SSM]Spring對(duì)IoC的實(shí)現(xiàn)

    目錄 四、Spring對(duì)IoC的實(shí)現(xiàn) 4.1IoC控制反轉(zhuǎn) 4.2依賴注入 4.2.1set注入 4.2.2構(gòu)造注入 4.3set注入專題 4.3.1注入外部Bean 4.3.2注入內(nèi)部Bean 4.3.3注入簡(jiǎn)單類型 4.3.4級(jí)聯(lián)屬性賦值 4.3.5注入數(shù)組 4.3.6注入List、Set、Map集合 4.3.7注入Properties 4.3.8注入null和空字符串 4.3.9注入的值中含有特殊符號(hào) 4.

    2024年02月16日
    瀏覽(14)
  • spring 容器結(jié)構(gòu)/機(jī)制debug分析--Spring 學(xué)習(xí)的核心內(nèi)容和幾個(gè)重要概念--IOC 的開發(fā)模式--綜合解圖

    spring 容器結(jié)構(gòu)/機(jī)制debug分析--Spring 學(xué)習(xí)的核心內(nèi)容和幾個(gè)重要概念--IOC 的開發(fā)模式--綜合解圖

    ??前言 本片文章是spring 容器結(jié)構(gòu)/機(jī)制debug分析和幾個(gè)重要概念以及IOC 的開發(fā)模式 ??個(gè)人主頁(yè):[塵覺主頁(yè)](https://blog.csdn.net/apple_67445472?type=blog) ??個(gè)人簡(jiǎn)介:大家好,我是塵覺,希望我的文章可以幫助到大家,您的滿意是我的動(dòng)力???? 在csdn獲獎(jiǎng)榮譽(yù): ??csdn城市之星2名

    2024年02月02日
    瀏覽(46)
  • spring6-實(shí)現(xiàn)簡(jiǎn)易版IOC容器

    我們都知道,Spring框架的IOC是基于Java反射機(jī)制實(shí)現(xiàn)的,下面我們先回顧一下java反射。 1、回顧Java反射 Java 反射機(jī)制是在運(yùn)行狀態(tài)中,對(duì)于任意一個(gè)類,都能夠知道這個(gè)類的所有屬性和方法;對(duì)于任意一個(gè)對(duì)象,都能夠調(diào)用它的任意方法和屬性;這種動(dòng)態(tài)獲取信息以及動(dòng)態(tài)調(diào)

    2024年02月08日
    瀏覽(20)
  • 造個(gè)輪子-任務(wù)調(diào)度執(zhí)行小框架-IOC容器實(shí)現(xiàn)

    造個(gè)輪子-任務(wù)調(diào)度執(zhí)行小框架-IOC容器實(shí)現(xiàn)

    忙里偷閑,今天終于是把概率論這塊骨頭干下來(lái)了。所以的話,留了點(diǎn)時(shí)間,把整個(gè)項(xiàng)目的結(jié)構(gòu)和基本的功能給實(shí)現(xiàn)以下。通過(guò)昨天的一個(gè)功能的一個(gè)設(shè)計(jì),我想應(yīng)該可以明白我想干啥吧。這里的話,重復(fù)一下,那就是俺們要搞一個(gè)任務(wù)執(zhí)行框架。 這個(gè)框架到底有啥用?舉個(gè)

    2024年02月13日
    瀏覽(26)
  • java八股文面試[Spring]——如何實(shí)現(xiàn)一個(gè)IOC容器

    java八股文面試[Spring]——如何實(shí)現(xiàn)一個(gè)IOC容器

    ????????IOC不是一種技術(shù),只是一種思想,一個(gè)重要的面向?qū)ο缶幊痰姆▌t,它能指導(dǎo)我們?nèi)绾卧O(shè)計(jì)出 松耦合 ,更優(yōu)良的程序。傳統(tǒng)應(yīng)用程序都是由我們?cè)陬悆?nèi)部主動(dòng)創(chuàng)建依賴對(duì)象,從而導(dǎo)致類與類之間高耦合,難于測(cè)試;有了IOC容器后,把 創(chuàng)建和查找依賴對(duì)象 的控制

    2024年02月10日
    瀏覽(32)
  • Spring中IOC容器常用的接口和具體的實(shí)現(xiàn)類

    在Spring框架沒有出現(xiàn)之前,在Java語(yǔ)言中,程序員們創(chuàng)建對(duì)象一般都是通過(guò)new來(lái)完成,那時(shí)流行一句話“萬(wàn)物即可new,包括女朋友”。但是這種創(chuàng)建對(duì)象的方式維護(hù)成本很高,而且對(duì)于類之間的相互關(guān)聯(lián)關(guān)系很不友好。鑒于這種情況,Spring框架應(yīng)運(yùn)而生,Spring框架絕對(duì)是

    2024年02月15日
    瀏覽(15)
  • Java項(xiàng)目:ssm框架基于spring+springmvc+mybatis框架的民宿預(yù)訂管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)(ssm+B/S架構(gòu)+源碼+數(shù)據(jù)庫(kù)+畢業(yè)論文)

    Java項(xiàng)目:ssm框架基于spring+springmvc+mybatis框架的民宿預(yù)訂管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)(ssm+B/S架構(gòu)+源碼+數(shù)據(jù)庫(kù)+畢業(yè)論文)

    本項(xiàng)目是一套ssm827基于SSM框架的民宿預(yù)訂管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn),主要針對(duì)計(jì)算機(jī)相關(guān)專業(yè)的正在做畢設(shè)的學(xué)生與需要項(xiàng)目實(shí)戰(zhàn)練習(xí)的Java學(xué)習(xí)者。 包含:項(xiàng)目源碼、數(shù)據(jù)庫(kù)腳本等,該項(xiàng)目附帶全部源碼可作為畢設(shè)使用。 項(xiàng)目都經(jīng)過(guò)嚴(yán)格調(diào)試,eclipse 確??梢赃\(yùn)行! 該系統(tǒng)功能

    2024年01月22日
    瀏覽(36)
  • 基于SSM框架實(shí)現(xiàn)的在線心理評(píng)測(cè)與咨詢系統(tǒng)(技術(shù)棧 spring+springmvc+mybatis+jsp+jquery+css)

    基于SSM框架實(shí)現(xiàn)的在線心理評(píng)測(cè)與咨詢系統(tǒng)(技術(shù)棧 spring+springmvc+mybatis+jsp+jquery+css)

    本項(xiàng)目是一套基于SSM框架實(shí)現(xiàn)的在線心理評(píng)測(cè)與咨詢系統(tǒng),主要針對(duì)計(jì)算機(jī)相關(guān)專業(yè)的正在做畢設(shè)的學(xué)生與需要項(xiàng)目實(shí)戰(zhàn)練習(xí)的Java學(xué)習(xí)者。 包含:項(xiàng)目源碼、數(shù)據(jù)庫(kù)腳本等,該項(xiàng)目附帶全部源碼可作為畢設(shè)使用。 項(xiàng)目都經(jīng)過(guò)嚴(yán)格調(diào)試,eclipse或者idea 確??梢赃\(yùn)行! 該系統(tǒng)功

    2024年04月12日
    瀏覽(34)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包