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家族前來踢館(二)




(完)


編程新說


用獨特的視角說技術



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM