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

Spring?IOC容器使用詳細(xì)講解

 更新時間:2022年12月21日 10:39:26   作者:King'sLanding  
IOC-Inversion?of?Control,即控制反轉(zhuǎn)。它不是什么技術(shù),而是一種設(shè)計(jì)思想。這篇文章將為大家介紹一下Spring控制反轉(zhuǎn)IOC的原理,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

Spring IOC

IOC思想

IOC:Inversion of Control,翻譯過來是反轉(zhuǎn)控制。

獲取資源的傳統(tǒng)方式

必須清楚了解資源創(chuàng)建整個過程中的全部細(xì)節(jié)且熟練掌握

在應(yīng)用程序中的組件需要獲取資源時,傳統(tǒng)的方式是組件主動的從容器中獲取所需要的資源,在這樣的模式下開發(fā)人員往往需要知道在具體容器中特定資源的獲取方式,增加了學(xué)習(xí)成本,同時降低了開發(fā)效率。

反轉(zhuǎn)控制方式獲取資源

不必關(guān)心資源創(chuàng)建過程的所有細(xì)節(jié)。

反轉(zhuǎn)控制的思想完全顛覆了應(yīng)用程序組件獲取資源的傳統(tǒng)方式:反轉(zhuǎn)了資源的獲取方式——改由容器主動的將資源推送給需要的組件,開發(fā)人員不需要知道容器是如何創(chuàng)建資源對象的,只需要提供接收資源的方式即可,極大的降低了學(xué)習(xí)成本,提高了開發(fā)的效率。這種行為也稱為查找的被動形式。

DI依賴注入

DI:Dependency Injection,翻譯過來是依賴注入。

DI 是 IOC 的另一種表述方式:即組件以一些預(yù)先定義好的方式(例如:setter 方法)接受來自于容器的資源注入。相對于IOC而言,這種表述更直接。

所以結(jié)論是:IOC 就是一種反轉(zhuǎn)控制的思想, 而 DI 是對 IOC 的一種具體實(shí)現(xiàn)。

IOC容器在Spring中的實(shí)現(xiàn)

? Spring 的 IOC 容器就是 IOC 思想的一個落地的產(chǎn)品實(shí)現(xiàn)。IOC 容器中管理的組件也叫做 bean。在創(chuàng)建bean 之前,首先需要創(chuàng)建 IOC 容器。

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

BeanFactory

這是 IOC 容器的基本實(shí)現(xiàn),是 Spring 內(nèi)部使用的接口。面向 Spring 本身,不提供給開發(fā)人員使用。

ApplicationContext

BeanFactory 的子接口,提供了更多高級特性。面向 Spring 的使用者,幾乎所有場合都使用 ApplicationContext 而不是底層的 BeanFactory。

ApplicationContext的主要實(shí)現(xiàn)類

類型名簡介簡介
ClassPathXmlApplicationContext通過讀取類路徑下的 XML 格式的配置文件創(chuàng)建 的IOC 容器 對象
FileSystemXmlApplicationContext通過文件系統(tǒng)路徑讀取 XML 格式的配置文件創(chuàng)建 IOC 容 器對象
ConfigurableApplicationContextApplicationContext 的子接口,包含一些擴(kuò)展方法 refresh() 和 close() ,讓 ApplicationContext 具有啟動、 關(guān)閉和刷新上下文的能力。
WebApplicationContext專門為 Web 應(yīng)用準(zhǔn)備,基于 Web 環(huán)境創(chuàng)建 IOC 容器對 象,并將對象引入存入 ServletContext 域中。

ClassPathXmlApplicationContext獲取Bean

讀取類路徑下的 XML 格式的配置文件創(chuàng)建的 IOC 容器對象

創(chuàng)建bean測試

/**
 * Created by KingsLanding on 2022/7/31 18:37
 */
public class HelloWorldSpring {
    public void satHello(){
        System.out.println("hello World Spring ioc");
    }
}

在Spring的配置文件中配置bean

通過bean標(biāo)簽配置IOC容器所管理的bean

  • id:設(shè)置bean的唯一標(biāo)識
  • class:設(shè)置bean所對應(yīng)類型的全類名
    <!--
    配置HelloWorldSpring 所對應(yīng)的bean,即將HelloWorldSpring 的對象交給Spring的IOC容器管理
-->
    <bean id="helloWorld" class="com.spring.pojo.HelloWorldSpring"></bean>

測試結(jié)果

@Test
 public void testHello(){
     //獲取IOC容器
    ApplicationContext ioc = new ClassPathXmlApplicationContext("HelloSpring.xml");
    HelloWorldSpring helloWorld = (HelloWorldSpring) ioc.getBean("helloWorld");
    helloWorld.satHello();
}

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

相關(guān)文章

  • Mybatis在insert插入操作后如何返回主鍵id問題

    Mybatis在insert插入操作后如何返回主鍵id問題

    這篇文章主要介紹了Mybatis在insert插入操作后如何返回主鍵id問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • Java中同步與并發(fā)用法分析

    Java中同步與并發(fā)用法分析

    這篇文章主要介紹了Java中同步與并發(fā)用法,較為詳細(xì)的分析了java同步與并發(fā)所涉及的相關(guān)類與使用技巧,需要的朋友可以參考下
    2015-06-06
  • Java線程的三種創(chuàng)建方式

    Java線程的三種創(chuàng)建方式

    這篇文章主要給大家分享的是ava線程的三種創(chuàng)建方式,Thread、Runnable和Thread、Runnable和Thread,想了解具體方式的小伙伴可以參考下面文章內(nèi)容,希望對你有所幫助
    2021-11-11
  • 簡單了解SpringMVC全局異常處理常用方法

    簡單了解SpringMVC全局異常處理常用方法

    這篇文章主要介紹了簡單了解SpringMVC全局異常處理常用方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-09-09
  • 詳解Java串行化接口的用法和原理

    詳解Java串行化接口的用法和原理

    在Java開發(fā)中,我們經(jīng)常需要將對象進(jìn)行序列化和反序列化,以便在網(wǎng)絡(luò)傳輸或存儲到持久化介質(zhì)中,Java提供了一種機(jī)制,即通過實(shí)現(xiàn)Serializable接口來實(shí)現(xiàn)對象的串行化,本文將詳細(xì)介紹Java串行化接口的用法和原理,以及一些相關(guān)的注意事項(xiàng),需要的朋友可以參考下
    2023-11-11
  • Java中Minio的基本使用詳解

    Java中Minio的基本使用詳解

    這篇文章主要介紹了Java中Minio的基本使用詳解,MinIO 是一個基于Apache License v2.0開源協(xié)議的對象存儲服務(wù),它兼容亞馬遜S3云存儲服務(wù)接口,非常適合于存儲大容量非結(jié)構(gòu)化的數(shù)據(jù),例如圖片、視頻、日志文件、備份數(shù)據(jù)和容器/虛擬機(jī)鏡像等,需要的朋友可以參考下
    2024-01-01
  • Intellij Idea中進(jìn)行Mybatis逆向工程的實(shí)現(xiàn)

    Intellij Idea中進(jìn)行Mybatis逆向工程的實(shí)現(xiàn)

    這篇文章主要介紹了Intellij Idea中進(jìn)行Mybatis逆向工程的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • Mybatis的動態(tài)Sql組合模式詳情

    Mybatis的動態(tài)Sql組合模式詳情

    這篇文章主要介紹了Mybatis的動態(tài)Sql組合模式詳情,這篇文章從組合模式的角度分析了Mybatis動態(tài)sql的部分,SqlNode是組合模式的Component接口,更多相關(guān)內(nèi)容需要的小伙伴可以參考一下
    2022-08-08
  • 總結(jié)Java對象被序列化的兩種方法

    總結(jié)Java對象被序列化的兩種方法

    今天給大家?guī)淼氖顷P(guān)于Java的相關(guān)知識,文章圍繞著Java對象被序列化的兩種方法展開,文中有非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下
    2021-06-06
  • Springboot實(shí)現(xiàn)前后端分離excel下載

    Springboot實(shí)現(xiàn)前后端分離excel下載

    這篇文章主要介紹了Springboot實(shí)現(xiàn)前后端分離excel下載,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-11-11

最新評論

宜兰市| 定结县| 阳曲县| 灵寿县| 枞阳县| 剑川县| 固始县| 玛沁县| 射阳县| 龙口市| 防城港市| 嘉峪关市| 扎鲁特旗| 安宁市| 邵武市| 淅川县| 达日县| 临西县| 铜川市| 黄陵县| 贡觉县| 卫辉市| 桐庐县| 治县。| 彝良县| 邵阳县| 宜宾市| 徐闻县| 彭山县| 武乡县| 山东省| 和静县| 阆中市| 竹溪县| 梁山县| 聊城市| 库尔勒市| 泽库县| 岑巩县| 康定县| 镇原县|