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