一個工作3年的小伙子,去面試被問到Spring裡面的問題。 這個問題比較簡單,但是他卻沒有回答上來。 雖然他可以通過搜索引擎找到答案,但是如果沒有理解,下次面試還是不會! 這個面試題是: “Spring中的Bean,作用域有哪些?” 對於這個問題,看看普通人和高手的回答。 普通人: 嗯。。。。。。。 ...
一個工作3年的小伙子,去面試被問到Spring裡面的問題。
這個問題比較簡單,但是他卻沒有回答上來。
雖然他可以通過搜索引擎找到答案,但是如果沒有理解,下次面試還是不會!
這個面試題是: “Spring中的Bean,作用域有哪些?”
對於這個問題,看看普通人和高手的回答。
普通人:
嗯。。。。。。。
高手:
好的,這個問題可以從幾個方面來回答。
首先呢,Spring 框架裡面的IOC容器,可以非常方便的去幫助我們管理應用裡面的Bean對象實例。
我們只需要按照Spring裡面提供的xml或者註解等方式去告訴IOC容器,哪些Bean需要被IOC容器管理就行了。
其次呢,既然是Bean對象實例的管理,那意味著這些實例,是存在生命周期,也就是所謂的作用域。
理論上來說,常規的生命周期只有兩種:
- singleton, 也就是單例,意味著在整個Spring容器中只會存在一個Bean實例。
- prototype,翻譯成原型,意味著每次從IOC容器去獲取指定Bean的時候,都會返回一個新的實例對象。
但是在基於Spring框架下的Web應用裡面,增加了一個會話緯度來控制Bean的生命周期,主要有三個選擇
- request, 針對每一次http請求,都會創建一個新的Bean
- session,以sesssion會話為緯度,同一個session共用同一個Bean實例,不同的session產生不同的Bean實例
- globalSession,針對全局session緯度,共用同一個Bean實例
以上就是我對這個問題的理解。
總結
“技術框架的本質是去解決特定問題的,所以如果能夠站在技術的角度去思考Spring”
當遇到這種問題的時候,就可以像這個高手的回答一樣,能夠基於場景來推斷出答案。
就像我們現在寫CRUD代碼,它已經變成了一種基本能力去讓我們完成複雜業務邏輯的開發。
本期的普通人VS高手面試系列就到這裡結束了。
有任何不懂的技術面試題,歡迎隨時私信我
版權聲明:本博客所有文章除特別聲明外,均採用 CC BY-NC-SA 4.0 許可協議。轉載請註明來自
Mic帶你學架構
!
如果本篇文章對您有幫助,還請幫忙點個關註和贊,您的堅持是我不斷創作的動力。歡迎關註「跟著Mic學架構」公眾號公眾號獲取更多技術乾貨!