1

在我的 Spring-MMVC 应用程序中,

我有一个与调度程序 servlet 对应的xx-servlet.xml - 定义我的 Web 层 bean/类并导入另一个定义所有持久层 bean/服务的 context.xml。

在 xx-servlet.xml 中,

定义了一个ApplicationContextProvider实现ApplicationcontextAware接口的类。

并在需要时从(不使用)@Component获取这些 bean 的实例并注释了我所有的 bean(表示对象)。ApplicationContextWebApplicationContext

那么,在这种情况下,我的 bean 的范围是什么?

另外,如果我使用会WebApplicationContext怎样?

最好的做法是什么……使用ApplicationContextor WebApplicationContext

4

1 回答 1

3

WebApplicationContext向标准应用程序上下文(仅提供 Singleton 和 Prototype 范围)添加了更多范围(请求、会话、全局会话)。如果您不指定 bean 范围,默认情况下它将是 Singleton 范围。

最佳实践是,如果您在 Web 环境中,则应该使用 WebApplicationContext,这样您就可以使用那些额外的范围和ServletContextAware bean。但是,如果您不使用它们,则取决于您。

除此之外,大多数 spring mvc 基础设施 bean 都需要一个 WebApplicationContext。

于 2012-10-03T16:30:19.653 回答