怎麼理解控制反轉
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...