【面試普通人VS高手】Spring 中Bean的作用域有哪些?

跟著Mic學架構發表於2022-05-17

一個工作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高手面試系列就到這裡結束了。

有任何不懂的技術面試題,歡迎隨時私信我

file

版權宣告:本部落格所有文章除特別宣告外,均採用 CC BY-NC-SA 4.0 許可協議。轉載請註明來自 Mic帶你學架構
如果本篇文章對您有幫助,還請幫忙點個關注和贊,您的堅持是我不斷創作的動力。歡迎關注同名微信公眾號獲取更多技術乾貨!

相關文章