Spring設計及源碼分析

最近這幾天在看Spring的設計與源碼,又是把自己折磨的死去活來的。但是這麼經典的東西總是要好好體會吧,畢竟機會不多。

寫一點自己的思考和感觸吧:

問題1:IOC和DI到底有什麼區別?

之前一直認爲是同一個東西,就是從不同的角度來看的,所以有了不同的名稱(主要是從李剛的那本書上看到所理解的),但是最近去官網看文檔,發現了一句話不是這麼寫的,spring的文檔將這二者當做了不同的概念:

2.2.1 Core Container

The Core Container consists of the spring-corespring-beansspring-contextspring-context-support, and spring-expression (Spring Expression Language) modules.

The spring-core and spring-beans modules provide the fundamental parts of the framework, including the IoC and Dependency Injection features. 

主要是因爲看到了其中的一個詞:and,他把IOC和DI用and連起來了,當時還不理解,問了同事,同事說是語法的問題,就是一個東西,但是由於要看源碼,所以看了各種相關資料書籍和視頻,在視頻中又發現了一個新的講解:IOC是把bean創建出來,DI是注入依賴,IOC是前提,爲DI提供對象,DI是工具,將對象關聯起來,那麼這麼說來我倒是能理解了。

你可以將其等同起來看待,也可以將其分開理解。


問題2:BeanFactory的實現類都是在getbean時才創建對象的,而ApplicationContext一開始就創建了對象,我也知道有懶加載的配置,我也懶得理會,我的問題是:開始這麼設計beanfactory時是爲了考慮性能問題(2001年時內存才幾十M,硬盤也才一二十G),而後來硬件發展了(現在的內存動不動就8G,16G,32,64,硬盤那是更大以T算了),不再需要過多的考慮硬件性能了,那麼我們編程時還需要過多的考慮性能問題嗎?

比如說我在方法中創建的對象過多了,創建了無用的局部變量(無意識創建的),方法調用的層次過多……等等這些還需要仔細考慮嗎?我想吧,應該不太用在意了,除非是在及其苛刻的條件下才需要考慮,而一般我們接觸的都是很普通的程序。但是由於個人習慣問題,我還是會考慮的,個人追求完美而已(潔癖問題)。那麼那些數據庫的字段類型還有必要區分int short long 之類的了嗎,因爲到了程序中都是對應的一種類型,而硬盤又不需要節省這麼點空間,統一類型就挺好的,之前還一直追求完美的,但是現在覺得數據庫的設計也不必那麼苛刻了。其實很多公司也都已經這麼做了,我以後也應該這麼做。




看代碼還是隻剛開頭,等邊看邊寫吧。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章