spring本質上是乙個大工廠,根據xml檔案能建立出程式所需的物件,有效的降低程式的耦合性。那為什麼這樣能降低程式的耦合性呢?我們最初想要建立物件,都是呼叫類的建構函式,new出我們需要的物件。但是這樣做不好,一旦我們要例項化的物件發生改變,就需要把每一處建立例項的**都修改,提高了**維護的難度。於是工廠模式出現了,所需的物件都由乙個工廠類產生,需要改變時,只需修改對應的工廠方法就行了。但是這樣依然不夠好,人們想能不能有乙個配置檔案,裡面定義了我對所需物件的要求,工廠類對我的配置檔案進行解析,來產生我所需的類,一旦我的需求發生改變,我只需要修改對應的配置檔案就行了,不再需要去修改我的原始碼。這樣不僅把程式的耦合性降低了,還把維護的難度也降低了。spring ioc容器就是做的這樣一件事情。下面我來簡單模擬一下ioc容器產生物件例項的過程(沒有實現依賴注入)
dog基類與兩個實現類
publicclass
dog
public
void
move()
public
void
call()
}
publicclass corgi extends
dog @override
public
void
call()
}
public class goldenretriever extends dog@override
public void call()
}
配置檔案beans.properties
dog = beanfactory.goldenretriever
工具類propertiesutil:負責載入和解析配置檔案
publicclass
propertiesutil
catch
(ioexception e)
finally
catch
(ioexception e) }}
}public
static
string getproperty(string id)
}
測試:
@testpublic
void testbeanfactory() throws
exception
結果:
乙隻金毛在跑乙隻金毛在叫
當我們需要的dog物件需要改變時,我們只需要把配置檔案改為:
dog = beanfactory.corgi
結果:
乙隻柯基在跑乙隻柯基在叫
簡單實現spring中Ioc容器
spring的ioc容器是通過工廠模式 反射機制完成的。簡單來說反射機制就是我們可以通過類的名字來生成物件。比如比較常見的用法 person p person class.forname chinese newinstance 這樣子,我們可以直接通過chinese這個類的名字來構造這個物件。下面我...
Spring中IOC程式設計
一 基本概念 1.ioc inverse of controll 控制反 所謂控制反轉就是把建立物件 bean 和維護物件 bean 的關係的權利從程式中轉移到spring的 容器 applicationcontext.xml 而程式本身不再維護.2.di dependency injection ...
AOP與IOC,簡單理解spring
使用ioc的好處就是可以修改配置而不用重新編譯.class a public void seta int a public void setb int b a和b的值就可以在指定的xml檔案裡修改.人的手可以寫字,並且可以用很多中筆來寫字。例如,鋼筆 鉛筆 毛筆等等。這裡抽象的說 如果我們要用到人的...