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

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

 更新時(shí)間:2022年07月29日 15:48:19   作者:·~簡單就好  
在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)用集合,大大的解決了程序耦合性的問題

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è)類出了問題,那么可能會(huì)導(dǎo)致這個(gè)框架出現(xiàn)問題。 Spring 將創(chuàng)建對(duì)象的權(quán)利給了IOC,在IOC當(dāng)中創(chuàng)建了ABC三個(gè)對(duì)象嗎,那么我們我們其他的類只需要調(diào)用集合, 大大的解決了程序耦合性的問題。

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

解決問題:使用IOC可以解決程序耦合性高的問題。

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路徑";
       //通過反射創(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)部的使用接口,不提供給開發(fā)人員使用

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

(2)ApplicationContext:BeanFactory接口的子接口,提供了更多更強(qiáng)大的功能,一般由開發(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)圖解,文中通過示例代碼介紹的非常詳細(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)資料,這里舉例說明該如何實(shí)現(xiàn),具有參考價(jià)值,需要的朋友可以參考下
    2016-11-11
  • java 定義長度為0的數(shù)組/空數(shù)組案例

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

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

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

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

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

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

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

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

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

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

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

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

最新評(píng)論

芮城县| 峨眉山市| 永和县| 宜城市| 平塘县| 兴化市| 新沂市| 平阳县| 堆龙德庆县| 丹东市| 浦东新区| 吉林市| 宾川县| 准格尔旗| 区。| 台北县| 罗甸县| 泰来县| 和顺县| 闽清县| 太谷县| 年辖:市辖区| 黄龙县| 临桂县| 宁化县| 扬州市| 清丰县| 富宁县| 寿阳县| 额济纳旗| 丽江市| 中山市| 罗城| 张北县| 商南县| 茶陵县| 澎湖县| 长子县| 霍林郭勒市| 盐山县| 蕉岭县|