2011-04-13 82 views
1

我想更好地理解bean的Spring實例化。爲了說明我的疑惑,讓我們假設我們有一個控制器被有線服務類,這裏的問題:彈簧注入和對象實例化

  1. 如何將彈出管理生命週期控制器的 ?每個請求是否會創建一個新對象 ?
  2. 一旦服務被instantiaded和 連接到一個控制器,將彈簧 重新使用該對象引用來連線 它在其他豆?

回答

3
  1. 與Servlets一樣,控制器的生命週期跨越請求。應用程序啓動時,應用程序中的所有控制器僅實例化一次;之後這些對象被重新用於服務所有請求。
  2. 正如Bozho所指出的那樣,默認情況下,所有的bean都在singleton範圍內,因此除非另有說明,否則它們將在任何地方重複使用。
0

這一切都取決於bean的範圍。默認情況下,所有的bean都在單例作用域中 - 也就是說,它們僅由容器實例化一次。

如果您指定@Scope("request")(或xml等效項),那麼相同的服務對象(單例)將被注入到請求範圍控制器的所有實例中。 (但你很少需要請求範圍的控制器)