1. 程式人生 > >10年架構師告訴你,他眼中的Spring容器是什麼樣子的

10年架構師告訴你,他眼中的Spring容器是什麼樣子的

相關文章

如何慢慢地快速成長起來?

成長的故事之Spring Core系列

你是如何看待Spring容器的,是這樣子嗎?
Spring的啟動過程,你有認真思考過嗎?(
待寫
面向切面程式設計,你指的是Spring AOP嗎?(
待寫
Spring的宣告式事務,這次你徹底明白了吧?(
待寫


§如何提問,如何回答?

記得大學時,思想道德修養課的老師說過,現在的大學生都不太會
表達自己的觀點。她舉了這麼個例子,如果你在食堂,隨機採訪幾個學生,就問:“你覺得食堂的飯菜怎麼樣啊?

你得到最多的答案大概是像這樣的,“
不錯,挺好吃的”;“不行,太難吃了”;“湊合,感覺還可以吧”。

原因有兩方面,一是學生

不知道該如何對一個事物發表自己的觀點,也就是自我表達能力有點差。二是提問的問題本身存在問題,太寬泛了,學生不知道該怎麼接。諸如此類的“你是如何看待XXX的?”這樣的問題,感覺是最難回答的。

但我要說的是,
如果你能把這類問題回答的很好,那你真的已經相當厲害了

§從面試別人說起

說起來我也面試過幾十個人了,不過說實話,我並沒有一個很好的套路或方法去面試別人。我一般不會特別在意應聘者截至到現在
擁有多少知識,或會多少技術。注意我說的是一般情況下不會。

原因有二,一來我們不是
造航母,招的就是擰螺絲的。二來我更在意一個人對他已有知識,或已經會用的技術的看法

因為一個
問題的結果無非就是一些答案
。但是一個看法的結果卻是一些觀點。一個人能夠當眾發表一些很有看法的觀點,說明的他的業務/技術素質心理素質都很不錯。

所以對於應聘者,我都會問,
你如何看待Spring大都回答Spring是一個IoC容器,然後就沒有了。其實我真正想知道的是你眼中的Spring是什麼樣子的

然後我繼續問,什麼是IoC?大都答道控制反轉或依賴注入。我再問,你如何理解控制反轉呢?幾乎沒有人能很好的回答。

既然是一個IoC容器,那你怎麼理解“
容器”二字?幾乎也沒有人能回答的很好。

§C語言中的全域性變數


計算機專業一般都會學C語言,倒不是為了做專案,只是作為入門語言。C語言是面向過程的,沒有類、欄位等這些概念,只有
函式和變數

剛開始接觸程式和語言時,大都水平不高。
用的最多的就是全域性變數,而且覺得特別好用

原因有二,一是隻要在一個全域性位置定義好,後面程式中的任何地方都能夠訪問到它二是因為全域性可訪問,所以不用去考慮或規劃,如何定義變數,怎麼在函式間傳遞或返回。關鍵作為初學者,不一定能夠做好這“簡單”的事情。

全域性變數非常簡單好用,和goto語句一樣。但逐漸都不推薦再使用或被淘汰了,因為它們太靈活了,
不太好控制,特別是後期程式碼量越來越多的時候。

如果發明一種東西,像全域性變數一樣簡單好用
繼承優點),但同時又能夠很好地控制住改進缺點),它能不火起來嗎?很顯然,Spring就具有這種特性(雖然現在的Spring已經足夠複雜了)。

§Spring很好用,真的

BAT之所以牛逼,就是因為它們都在各自的領域,徹底改變了人們的方式。Spring也徹底改變了人們的程式設計方式。

類似的還有
Struts/SpringMVC徹底改變了開發web應用的方式,Hibernate/Mybatis徹底改變了訪問資料庫相關程式碼的方式。

Spring的全域性性
人類擡頭,看到的是天。程式碼擡頭,看到的是Spring。在任何地方,程式碼都可以和Spring互動。可以這麼說,程式碼幾乎是在Spring的管控下執行的(雖然這樣講不是很精確)。

Spring的解耦性
這裡指的更多是開發方式上的解耦性。例如,從類A把B傳給類C,原來的做法是直接傳,這樣A和C就耦合了,其實它們本沒有關係。

現在只需在類A裡把B
放入Spring中就完事了。然後在類C裡再從Spring中取出B就可以了。A和C就解耦了,因為Spring充當了中間人

Spring的易用性
Spring就像你的
祕書/管家,需要什麼服務,告訴它,它給你提供。需要發號施令,告訴它,它幫你執行。

就把Spring想象成你
頭頂的容器,需要從裡取東西,伸開胳膊拽下來的就行了。需要往裡存東西,胳膊用力推上去就行了。整個過程你甚至都不用擡頭。

PS:Spring僅僅是個容器嗎?請持續關注後續文章!



經典文章推薦

小學生都能看懂的表示式計算(圖解)

五分鐘輕鬆瞭解Hbase列式儲存

List家族遺產繼承PK賽(一)

List家族遺產繼承PK賽(二)

Map家族前來踢館(一)

Map家族前來踢館(二)




(完)


程式設計新說


用獨特的視角說技術