Spring入門1 IOC控制翻轉

2021-09-26 14:00:33 字數 2097 閱讀 6412

ioc(inversion of control,控制反轉)。這是spring的核心,貫穿始終。所謂ioc,對於spring框架來說,就是由spring來負責控制物件的生命週期和物件間的關係。這是什麼意思呢,舉個簡單的例子,我們是如何找女朋友的?常見的情況是,我們到處去看**有長得漂亮身材又好的mm,然後打聽她們的興趣愛好、qq號、**號、ip號、iq號………,想辦法認識她們,投其所好送其所要,然後嘿嘿……這個過程是複雜深奧的,我們必須自己設計和面對每個環節。傳統的程式開發也是如此,在乙個物件中,如果要使用另外的物件,就必須得到它(自己new乙個,或者從jndi中查詢乙個),使用完之後還要將物件銷毀(比如connection等),物件始終會和其他的介面或類藕合起來。

那麼ioc是如何做的呢?有點像通過婚介找女朋友,在我和女朋友之間引入了乙個第三者:婚姻介紹所。婚介管理了很多男男**的資料,我可以向婚介提出乙個列表,告訴它我想找個什麼樣的女朋友,比如長得像李嘉欣,身材像林熙雷,唱歌像周杰倫,速度像卡洛斯,技術像齊達內之類的,然後婚介就會按照我們的要求,提供乙個mm,我們只需要去和她談戀愛、結婚就行了。簡單明瞭,如果婚介給我們的人選不符合要求,我們就會丟擲異常。整個過程不再由我自己控制,而是有婚介這樣乙個類似容器的機構來控制。spring所倡導的開發方式就是如此,所有的類都會在spring容器中登記,告訴spring你是個什麼東西,你需要什麼東西,然後spring會在系統執行到適當的時候,把你要的東西主動給你,同時也把你交給其他需要你的東西。所有的類的建立、銷毀都由 spring來控制,也就是說控制物件生存週期的不再是引用它的物件,而是spring。對於某個具體的物件而言,以前是它控制其他物件,現在是所有物件都被spring控制,所以這叫控制反轉。

傳統意義上測試物件helloioc

public class helloioc 

//main方法中建立類的例項然後呼叫類的方法

public static void main(string args)

}

這裡通過 spring 容器怎麼來建立呢?

利用預設的構造方法

//利用預設的構造方法

public static void main(string args)

利用靜態工廠方法

//利用靜態工廠方法

//首先建立靜態工廠類

public class helloiocstaticfactory

// 靜態工廠方法

public static helloioc getinstances()

public static void main(string args)

}

xml配置檔案

利用例項工廠方法

public class helloinstancefactory 

public helloioc getinstance()

public static void main(string args)

}

xml配置檔案

繞了半天突然發現我們寫這三種方法是要幹什麼來著?對了!我們最初的目的就是要helloioc的例項,最初我們知道用new來實現,現在我們知道通過spring有三種方法可以幫忙我們實現:

1.利用預設的構造方法:

將要例項化的類新增到xml檔案中,然後在測試類中啟動spring。從spring中取出資料(已經建立了物件)。通過物件呼叫方法。

2.通過靜態工廠方法:

**首先定義乙個靜態要例項化類的方法,返回的是這個類的物件,然後配置xml檔案。

將例項化改類的方法所在的類新增到xml檔案中。**然後在測試類中啟動spring。從spring中取出資料(已經建立了物件)。通過物件呼叫方法。

3.利用例項工廠方法:

**例項工廠類中定義了要例項化類的方法,返回的是乙個例項化類的例項化物件,然後配置xml檔案。**然後在測試類中啟動spring。從spring中取出資料(已經建立了物件)。通過物件呼叫方法。

spring技術內幕1 IOC容器體系結構

1 beanfactory類結構體系 beanfactory介面及其子類定義了spring ioc容器體系結構。beanfactory jndibeanfactory c autowirecapablebeanfactory i defaultlistablebeanfactory c xmlbea...

Spring入門案例(Ioc 控制反轉)

1 首先匯入spring必須要的4個核心包 beans core context expression 1個依賴 commons logging.jar 2 目標類 提供userservice介面和實現類 package ioc public inte ce userservice public c...

Spring 控制反轉IoC

1,ioc理論背景 在使用物件導向語言開發的系統中,不同物件之間相互協作得以實現業務邏輯。就像是一塊機械手錶,通過不同齒輪的協作,讓時針 分針 秒針精確的執行。如果乙個齒輪發生故障,那麼整塊手錶的功能就要受到影響。手錶齒輪之間的關係和軟體系統中物件的耦合關係很相似。物件之間的耦合關係是必要的,也是無...