再谈IOC 与DI
IOC(Inversion of Control)控制反轉(zhuǎn):所謂控制反轉(zhuǎn),就是把原先我們代碼里面需要實(shí)現(xiàn)的對(duì)象創(chuàng)建、依賴的代碼,反轉(zhuǎn)給容器來(lái)幫忙實(shí)現(xiàn)。那么必然的我們需要?jiǎng)?chuàng)建一個(gè)容器,同時(shí)需要一種描述來(lái)讓容器知道需要?jiǎng)?chuàng)建的對(duì)象與對(duì)象的關(guān)系。這個(gè)描述最具體表現(xiàn)就是我們所看到的配置文件。
DI(Dependency Injection)依賴注入:就是指對(duì)象是被動(dòng)接受依賴類(lèi)而不是自己主動(dòng)去找,換句話說(shuō)就是指對(duì)象不是從容器中查找它依賴的類(lèi),而是在容器實(shí)例化對(duì)象的時(shí)候主動(dòng)將它依賴的類(lèi)注入給它。先從我們自己設(shè)計(jì)這樣一個(gè)視角來(lái)考慮:
1、對(duì)象和對(duì)象的關(guān)系怎么表示?
可以用xml,properties 文件等語(yǔ)義化配置文件表示。
2、描述對(duì)象關(guān)系的文件存放在哪里?
可能是classpath,filesystem,或者是URL 網(wǎng)絡(luò)資源,servletContext 等。
回到正題,有了配置文件,還需要對(duì)配置文件解析。
3、不同的配置文件對(duì)對(duì)象的描述不一樣,如標(biāo)準(zhǔn)的,自定義聲明式的,如何統(tǒng)一?
在內(nèi)部需要有一個(gè)統(tǒng)一的關(guān)于對(duì)象的定義,所有外部的描述都必須轉(zhuǎn)化成統(tǒng)一的描述定義。
4、如何對(duì)不同的配置文件進(jìn)行解析?
需要對(duì)不同的配置文件語(yǔ)法,采用不同的解析器。
?
總結(jié)
- 上一篇: Spring容器初始化实现V3 版本
- 下一篇: Web IOC 容器初体验