1

我试图更好地理解 bean 的 Spring 实例化。为了说明我的疑问,假设我们有一个连接在控制器中的服务类,这里有一些问题:

  1. Spring 将如何管理 Controller 的生命周期?每个请求都会创建一个新对象吗?
  2. 一旦 Service 被实例化并连接到 Controller,Spring 会重新使用该对象引用将其连接到其他 bean 吗?
4

3 回答 3

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

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

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

于 2011-04-13T14:28:54.900 回答
0

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

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

于 2011-04-13T14:28:59.073 回答