[面試原題]
spring中定義bean的作用域時,使用singleton和prototype有何區別?
[正確答案]
singleton作用域:當把乙個bean定義設定為singleton作用域時,spring ioc容器中只會存在乙個共享的bean例項,並且所有對bean的請求(將其注入到另乙個bean中,或者以程式的方式呼叫容器的getbean()方法),只要id與該bean定義相匹配,則只會返回該bean的同一例項,可以理解為單例模式。
prototype作用域:prototype作用域的bean會導致在每次對該bean請求時都會建立乙個新的bean例項。
[面試技術點]
spring bean定義的作用域概念。
[解讀]
小博老師用乙個簡單的例子說明singleton與prototype的區別。
比如有乙個user類定義如下:
spring配置檔案中bean的定義如下:
測試用例**如下:
執行結果為:
user is initialized.
如果把bean的scope修改為prototype:
再次執行測試用例,結果為:
user is initialized.
user is initialized.
從上面的例子可以看出,當bean的scope配置為singleton的時候,通過spring context獲取bean的例項,只會初始化一次。也就說明singletone是單例模式。
當bean的scope配置為prototype時,通過spring context獲取bean的例項,每次都會初始化,也就是說每次都新建了乙個物件。
[擴充套件]
spring框架支援以下五種bean的作用域:
singleton: bean在每個springioc 容器中只有乙個例項。
prototype:乙個bean的定義可以有多個例項。
預設的spring bean 的作用域是singleton。
經典JAVA面試題
建立 tcp ip 連線 三次握手具體過程 由瀏覽器傳送乙個 http 請求 經過路由器的 通過伺服器的防火牆,該 http 請求到達了伺服器 伺服器處理該 http 請求,返回乙個 html 檔案 瀏覽器解析該 html 檔案,並且顯示在瀏覽器端 這裡需要注意 2.事務的併發問題有哪幾種?答 丟失...
java經典面試題
string str abcdesjkjsadfoiqwejhjkahjsiuhaskhka int counter new int 26 for int i 0 i經典面試題目 int n 5 for int i 0 i 5 i system.out.println n 5解析 n 5 n n 規...
經典Java面試題 Spring AOP
面試原題 action類的定義如下 為該類的actionsomething方法定義的切面攔截如下 請問在執行action物件的actionsomething 時的輸出是什麼?a.123456 b.654321 c.521643 d.521463 正確答案 c 面試技術點 spring aop定義以及...