一個工作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帶你學架構
!
如果本篇文章對您有幫助,還請幫忙點個關注和贊,您的堅持是我不斷創作的動力。歡迎關注同名微信公眾號獲取更多技術乾貨!