簡單模擬spring中ioc容器建立物件例項

2022-06-02 17:39:10 字數 1394 閱讀 3650

spring本質上是乙個大工廠,根據xml檔案能建立出程式所需的物件,有效的降低程式的耦合性。那為什麼這樣能降低程式的耦合性呢?我們最初想要建立物件,都是呼叫類的建構函式,new出我們需要的物件。但是這樣做不好,一旦我們要例項化的物件發生改變,就需要把每一處建立例項的**都修改,提高了**維護的難度。於是工廠模式出現了,所需的物件都由乙個工廠類產生,需要改變時,只需修改對應的工廠方法就行了。但是這樣依然不夠好,人們想能不能有乙個配置檔案,裡面定義了我對所需物件的要求,工廠類對我的配置檔案進行解析,來產生我所需的類,一旦我的需求發生改變,我只需要修改對應的配置檔案就行了,不再需要去修改我的原始碼。這樣不僅把程式的耦合性降低了,還把維護的難度也降低了。spring ioc容器就是做的這樣一件事情。下面我來簡單模擬一下ioc容器產生物件例項的過程(沒有實現依賴注入)

dog基類與兩個實現類

public

class

dog

public

void

move()

public

void

call()

}

public

class corgi extends

dog @override

public

void

call()

}

public class goldenretriever extends dog

@override

public void call()

}

配置檔案beans.properties

dog = beanfactory.goldenretriever

工具類propertiesutil:負責載入和解析配置檔案

public

class

propertiesutil

catch

(ioexception e)

finally

catch

(ioexception e) }}

}public

static

string getproperty(string id)

}

測試:

@test

public

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檔案裡修改.人的手可以寫字,並且可以用很多中筆來寫字。例如,鋼筆 鉛筆 毛筆等等。這裡抽象的說 如果我們要用到人的...