Spring注入和对象实例化

时间:2011-04-13 14:24:09

标签: spring spring-mvc autowired

我试图更好地理解bean的Spring实例化。为了说明我的疑虑,让我们假设我们在Controller中连接了一个Service类,以下是问题:

  1. Spring将如何管理生命周期 控制器?会是一个新的对象 是否按要求创建?
  2. 一旦服务被实例化并且 Spring将连接到Controller 重新使用该对象引用连线 它进入其他豆类?

3 个答案:

答案 0 :(得分:3)

  1. 与Servlet一样,控制器的生命周期超出了请求范围。应用程序启动时,应用程序中的所有控制器仅实例化一次;之后,这些对象被重新用于服务所有请求。
  2. 正如Bozho所指出的那样,默认情况下所有豆子都在单一范围内,因此除非另有说明,否则它们将在任何地方重复使用。

答案 1 :(得分:1)

默认范围是singleton,这意味着bean将被重用(即1)no,每个请求不会创建新对象,2)是,将重用对象引用)。

这都可以配置。看看http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/beans.html#beans-factory-scopes

答案 2 :(得分:0)

这一切都取决于bean的范围。默认情况下,所有bean都在单一范围内 - 也就是说,它们仅由容器实例化一次。

如果指定@Scope("request")(或等效的xml),则会在请求范围控制器的所有实例中注入相同的服务对象(单例)。 (但你很少需要请求范围的控制器)