Spring 第二節控制反轉(IOC)

2021-10-01 03:49:34 字數 1739 閱讀 8213

怎麼理解控制反轉

ioc即控制反轉,通常我們在專案當中需要手動new去建立物件,用這種方式**的耦合度較高,不利於對物件的管理。

現在我們將物件的建立權利反轉給spring容器,這就是控制反轉。

當某個類a需要類b物件時,如果類b已經交給了spring容器來管理,那麼程式執行到類a需要類b時,spring容器就通過依賴注入的方式,將類b物件注入到類a中協助完成業務功能(spring容器在例項化物件的時候,會根據物件之間的依賴關係,自動完成屬性注入工作,這就是依賴注入(di:dependency injection ))。

下面通過乙個例子來幫助我們理解ioc。

1、建立兩個bean類,名字分別為person.class和dog.class。

person類,定義兩個屬性,並寫出getter和setter方法,重寫tostring方法

private string name;

private dog dog;

//人養了一條狗

dog類,定義乙個屬性,並寫出getter和setter方法,重寫tostring方法

private string alias;

//狗的暱稱

2、配置beans.xml配置文件
="com.hbgc.domain.person" id=

"person1"

>

"name" value=

"李白"

/>

"dog" ref=

"dog1"

/>

<

/bean>

="com.hbgc.domain.dog" id=

"dog1"

>

"alias" value=

"土狗"

/>

<

/bean>

="com.hbgc.domain.dog" id=

"dog2"

>

"alias" value=

"二郎犬"

/>

<

/bean>

3、寫主方法

如果不使用spring的ioc功能的話,按照一般的思路我們會這樣做:

dog d =

newdog

("旺財");

person p =

newperson

("李白"

,p);

system.out.

println

(p);

上述方法沒有任何問題,但是,如果「李白」想要換一條狗呢?勢必會修改**,而****現大量的new,會導致**的耦合度比較高,給我們修改**造成麻煩,耗時耗力。那麼,如果做到盡量少改**呢?這就需要ioc容器出馬了。我們可以這樣做:

public

static

void

main

(string[

] args)

);通過指定id的構造方法

person p =

(person) context.

getbean

("person1");

//通過名字載入,要求id和name都不能重複

system.out.

println

(p);

//關閉ioc容器(.

close()

;}

第二節 Swift流程控制

使用if和switch實現條件判斷的功能,使用for in,for,while和do while實現迴圈的功能。條件表示式或迴圈變數外面的括號是可選的。包住語句體的大括號不能省略。在乙個if語句裡,條件必須是乙個布林表示式 這就意味著類似於if score的 是錯誤的,而不是隱含的和0進行比較的。你...

彙編 第二節

第二節 cpu主要有有運算器,控制器,暫存器,三部分組成 8086 cpu有14個暫存器,如ax,bx,cx,dx,si。8086所有暫存器都是16位的,可以存放2個byte即位元組,16位二進位制數 所能存放的最大數值是 11111111111 2 16 1 從0開始,所以 1嘛 通用暫存器為4個...

函式第二節

coding utf 8 1.定義乙個方法get num num num引數是列表型別,判斷列表裡面的元素為數字型別。其他型別則報錯,並且返回乙個偶數列表 注 列表裡面的元素為偶數 def get num l l for i in l 判斷列表l的元素是否都為整形 if not isinstance...