最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Spring框架IOC容器底層原理詳解

 更新時(shí)間:2022年07月29日 15:48:19   作者:·~簡(jiǎn)單就好  
在java當(dāng)中一個(gè)類想要使用另一個(gè)類的方法,就必須在這個(gè)類當(dāng)中創(chuàng)建這個(gè)類的對(duì)象,Spring將創(chuàng)建對(duì)象的權(quán)利給了IOC,在IOC當(dāng)中創(chuàng)建了ABC三個(gè)對(duì)象,那么我們我們其他的類只需要調(diào)用集合,大大的解決了程序耦合性的問(wèn)題

1、什么是IOC

IOC – Inverse of Control,控制反轉(zhuǎn),將對(duì)象的創(chuàng)建權(quán)力反轉(zhuǎn)給Spring框架!

在java當(dāng)中一個(gè)類想要使用另一個(gè)類的方法,就必須在這個(gè)類當(dāng)中創(chuàng)建這個(gè)類的對(duì)象,那么可能會(huì)出現(xiàn)如下情況, 比如A類當(dāng)中創(chuàng)建著B對(duì)象,B類當(dāng)中有C對(duì)象,C類當(dāng)中有A對(duì)象,這個(gè)如果一個(gè)類出了問(wèn)題,那么可能會(huì)導(dǎo)致這個(gè)框架出現(xiàn)問(wèn)題。 Spring 將創(chuàng)建對(duì)象的權(quán)利給了IOC,在IOC當(dāng)中創(chuàng)建了ABC三個(gè)對(duì)象嗎,那么我們我們其他的類只需要調(diào)用集合, 大大的解決了程序耦合性的問(wèn)題。

控制反轉(zhuǎn)(Inversion of Control,縮寫為IoC),是面向?qū)ο缶幊讨械囊环N設(shè)計(jì)原則,可以用來(lái)減低計(jì)算機(jī)代碼之間的耦合度。

解決問(wèn)題:使用IOC可以解決程序耦合性高的問(wèn)題。

2、IOC容器的底層原理

IOC的實(shí)現(xiàn),依賴于以下3門技術(shù)

① dom4j解析xml文檔;

② 工廠模式;

③ 采用反射設(shè)計(jì)模式創(chuàng)建對(duì)象

首先我們需要講一下什么是工廠模式

在當(dāng)前情況之下A類想要調(diào)用B類就必須自己在自己的內(nèi)部新建B類的對(duì)象,這樣的耦合度太高,那我們?nèi)绾谓档婉詈隙鹊哪兀?/p>

創(chuàng)建一個(gè)工廠類,這樣就能夠使得A和B的耦合度降低到最小值

3、那么上邊提到的三種技術(shù)如何實(shí)現(xiàn)IOC的呢

第一步:xml配置文件,配置創(chuàng)建對(duì)象

<bean id="demo" class="com.qcby.service.Demo" />

第二步:創(chuàng)建工廠類(ioc的核心原理)

public class DemoFactory {
    //利用dom4j得到name所對(duì)應(yīng)的value值
   public static Demo getDemo() throws Exception {
       //利用dom4j得到name所對(duì)應(yīng)的value值
       String value="class路徑";
       //通過(guò)反射創(chuàng)建對(duì)象
       Class clazz = Class.forName(value);
       //返回并創(chuàng)建demo對(duì)象
       return (Demo) clazz.newInstance();
   }
}

4、IOC(接口)

1.IOC思想是基于IOC容器完成的,IOC的底層就是對(duì)象工廠

2.Spring里邊提供了IOC容器的實(shí)現(xiàn)的兩種方式

(1) BeanFactroy:IOC容器是Spring內(nèi)部的使用接口,不提供給開(kāi)發(fā)人員使用

BeanFactroy:加載配置文件的時(shí)候不會(huì)去創(chuàng)建對(duì)象,在使用對(duì)象的時(shí)候才會(huì)去創(chuàng)建對(duì)

(2)ApplicationContext:BeanFactory接口的子接口,提供了更多更強(qiáng)大的功能,一般由開(kāi)發(fā)人員進(jìn)行使用

到此這篇關(guān)于Spring框架IOC容器底層原理詳解的文章就介紹到這了,更多相關(guān)Spring IOC容器內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • spring cloud zuul 與 sentinel的結(jié)合使用操作

    spring cloud zuul 與 sentinel的結(jié)合使用操作

    這篇文章主要介紹了spring cloud zuul 與 sentinel 的結(jié)合使用操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • Jmeter跨線程組傳值調(diào)用實(shí)現(xiàn)圖解

    Jmeter跨線程組傳值調(diào)用實(shí)現(xiàn)圖解

    這篇文章主要介紹了Jmeter跨線程組傳值調(diào)用實(shí)現(xiàn)圖解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-07-07
  • SpringBoot啟動(dòng)流程SpringApplication準(zhǔn)備階段源碼分析

    SpringBoot啟動(dòng)流程SpringApplication準(zhǔn)備階段源碼分析

    這篇文章主要為大家介紹了SpringBoot啟動(dòng)流程SpringApplication準(zhǔn)備階段源碼分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-04-04
  • Java 讀寫Properties配置文件詳解

    Java 讀寫Properties配置文件詳解

    這篇文章主要介紹了Java 讀寫Properties配置文件詳解的相關(guān)資料,這里舉例說(shuō)明該如何實(shí)現(xiàn),具有參考價(jià)值,需要的朋友可以參考下
    2016-11-11
  • java 定義長(zhǎng)度為0的數(shù)組/空數(shù)組案例

    java 定義長(zhǎng)度為0的數(shù)組/空數(shù)組案例

    這篇文章主要介紹了java 定義長(zhǎng)度為0的數(shù)組/空數(shù)組案例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-03-03
  • SpringBoot中的ApplicationListener事件監(jiān)聽(tīng)器使用詳解

    SpringBoot中的ApplicationListener事件監(jiān)聽(tīng)器使用詳解

    這篇文章主要介紹了SpringBoot中的ApplicationListener事件監(jiān)聽(tīng)器使用詳解,ApplicationListener是應(yīng)用程序的事件監(jiān)聽(tīng)器,繼承自java.util.EventListener標(biāo)準(zhǔn)接口,采用觀察者設(shè)計(jì)模式,需要的朋友可以參考下
    2023-11-11
  • 詳解java中接口與抽象類的區(qū)別

    詳解java中接口與抽象類的區(qū)別

    這篇文章主要介紹了詳解java中接口與抽象類的區(qū)別的相關(guān)資料,希望通過(guò)本文能幫助到大家,讓大家輕松理解掌握接口與抽象類的區(qū)別,需要的朋友可以參考下
    2017-10-10
  • Java版本的回文字算法(java版本)

    Java版本的回文字算法(java版本)

    本文給大家分享一段java代碼關(guān)于回文字算法的實(shí)例代碼,代碼簡(jiǎn)單易懂,需要的朋友一起看看吧
    2016-10-10
  • Java并發(fā)編程中的ReentrantLock詳解

    Java并發(fā)編程中的ReentrantLock詳解

    這篇文章主要介紹了Java并發(fā)編程中的ReentrantLock詳解,從Java 5 開(kāi)始,引入了一個(gè)高級(jí)的處理并發(fā)的java.util.concurrent包,它提供了大量更高級(jí)的并發(fā)功能,能大大簡(jiǎn)化多線程程序的編寫,需要的朋友可以參考下
    2023-11-11
  • Idea設(shè)置spring boot應(yīng)用配置參數(shù)的兩種方式

    Idea設(shè)置spring boot應(yīng)用配置參數(shù)的兩種方式

    本文通過(guò)兩個(gè)方式介紹Idea設(shè)置spring boot應(yīng)用配置參數(shù),一種是配置VM options的參數(shù)時(shí)要以:-DparamName的格式設(shè)置參數(shù),第二種可以參考下本文詳細(xì)設(shè)置,感興趣的朋友跟隨小編一起看看吧
    2023-11-11

最新評(píng)論

宣汉县| 洮南市| 桓仁| 龙里县| 蕉岭县| 柘城县| 莱西市| 宝兴县| 波密县| 河间市| 舒兰市| 普陀区| 尚志市| 醴陵市| 敦煌市| 灯塔市| 横峰县| 通化市| 浑源县| 成安县| 凤庆县| 东乌| 太白县| 永兴县| 宜川县| 贺兰县| 积石山| 巴中市| 上饶市| 康保县| 炉霍县| 济源市| 巫溪县| 佛冈县| 万山特区| 绥化市| 西吉县| 益阳市| 民勤县| 金秀| 蒲江县|