Spring?IOC容器使用詳細講解
Spring IOC
IOC思想
IOC:Inversion of Control,翻譯過來是反轉控制。
獲取資源的傳統(tǒng)方式
必須清楚了解資源創(chuàng)建整個過程中的全部細節(jié)且熟練掌握
在應用程序中的組件需要獲取資源時,傳統(tǒng)的方式是組件主動的從容器中獲取所需要的資源,在這樣的模式下開發(fā)人員往往需要知道在具體容器中特定資源的獲取方式,增加了學習成本,同時降低了開發(fā)效率。
反轉控制方式獲取資源
不必關心資源創(chuàng)建過程的所有細節(jié)。
反轉控制的思想完全顛覆了應用程序組件獲取資源的傳統(tǒng)方式:反轉了資源的獲取方式——改由容器主動的將資源推送給需要的組件,開發(fā)人員不需要知道容器是如何創(chuàng)建資源對象的,只需要提供接收資源的方式即可,極大的降低了學習成本,提高了開發(fā)的效率。這種行為也稱為查找的被動形式。
DI依賴注入
DI:Dependency Injection,翻譯過來是依賴注入。
DI 是 IOC 的另一種表述方式:即組件以一些預先定義好的方式(例如:setter 方法)接受來自于容器的資源注入。相對于IOC而言,這種表述更直接。
所以結論是:IOC 就是一種反轉控制的思想, 而 DI 是對 IOC 的一種具體實現(xiàn)。
IOC容器在Spring中的實現(xiàn)
? Spring 的 IOC 容器就是 IOC 思想的一個落地的產(chǎn)品實現(xiàn)。IOC 容器中管理的組件也叫做 bean。在創(chuàng)建bean 之前,首先需要創(chuàng)建 IOC 容器。
Spring 提供了 IOC 容器的兩種實現(xiàn)方式:
BeanFactory
這是 IOC 容器的基本實現(xiàn),是 Spring 內(nèi)部使用的接口。面向 Spring 本身,不提供給開發(fā)人員使用。
ApplicationContext
BeanFactory 的子接口,提供了更多高級特性。面向 Spring 的使用者,幾乎所有場合都使用 ApplicationContext 而不是底層的 BeanFactory。
ApplicationContext的主要實現(xiàn)類
| 類型名簡介 | 簡介 |
|---|---|
| ClassPathXmlApplicationContext | 通過讀取類路徑下的 XML 格式的配置文件創(chuàng)建 的IOC 容器 對象 |
| FileSystemXmlApplicationContext | 通過文件系統(tǒng)路徑讀取 XML 格式的配置文件創(chuàng)建 IOC 容 器對象 |
| ConfigurableApplicationContext | ApplicationContext 的子接口,包含一些擴展方法 refresh() 和 close() ,讓 ApplicationContext 具有啟動、 關閉和刷新上下文的能力。 |
| WebApplicationContext | 專門為 Web 應用準備,基于 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標簽配置IOC容器所管理的bean
- id:設置bean的唯一標識
- class:設置bean所對應類型的全類名
<!--
配置HelloWorldSpring 所對應的bean,即將HelloWorldSpring 的對象交給Spring的IOC容器管理
-->
<bean id="helloWorld" class="com.spring.pojo.HelloWorldSpring"></bean>
測試結果
@Test
public void testHello(){
//獲取IOC容器
ApplicationContext ioc = new ClassPathXmlApplicationContext("HelloSpring.xml");
HelloWorldSpring helloWorld = (HelloWorldSpring) ioc.getBean("helloWorld");
helloWorld.satHello();
}
到此這篇關于Spring IOC容器使用詳細講解的文章就介紹到這了,更多相關Spring IOC容器內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
SpringMVC 跨重定向請求傳遞數(shù)據(jù)的方法實現(xiàn)
這篇文章主要介紹了SpringMVC 跨重定向請求傳遞數(shù)據(jù)的方法實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-06-06
Spring Boot+Jpa多數(shù)據(jù)源配置的完整步驟
這篇文章主要給大家介紹了關于Spring Boot+Jpa多數(shù)據(jù)源配置的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-01-01
springboot自定義starter實現(xiàn)過程圖解
這篇文章主要介紹了springboot自定義starter實現(xiàn)過程圖解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-02-02
基于SpringBoot和Leaflet的行政區(qū)劃地圖掩膜效果實戰(zhàn)教程
本文講解的是一種圖層級的掩膜,即使用行政區(qū)劃圖層來進行掩膜,使用場景為,用戶只需要在地圖頁面中展示目標行政區(qū)劃內(nèi)的影像信息,對于行政邊界外的影像,這篇文章主要介紹了基于SpringBoot和Leaflet的行政區(qū)劃地圖掩膜效果實戰(zhàn),需要的朋友可以參考下2024-05-05
老生常談spring boot 1.5.4 日志管理(必看篇)
下面小編就為大家?guī)硪黄仙U剆pring boot 1.5.4 日志管理(必看篇)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-06-06

