8

以下允许在 Spring 3.0 中声明单例 bean:

@Bean
@Scope(BeanDefinition.SCOPE_SINGLETON)
private void setBean1(Bean1 b1) {
    this.b1 = b1;
}

但是,BeanDefinition没有为请求、会话和全局会话定义范围值。这些在哪里定义?否则,我应该使用和@Scope("request")吗?@Scope("session")@Scope("global session")

4

3 回答 3

7

BeanDefinition只有SCOPE_SINGLETONSCOPE_PROTOTYPE

仅适用于 Web 应用程序的其他范围在org.springframework.web.context.WebApplicationContext.

可以在常量字段值的 javadoc 中找到有用的常量列表。

于 2012-07-01T13:28:50.307 回答
6

如果需要,您可以使用字符串文字(尽管全局会话将是“globalSession”)。

或者,您可以使用定义在WebApplicationContext.

于 2012-07-01T13:23:16.213 回答
2

没有一个地方可以定义所有范围名称,并且并非所有范围名称都有常量:

  • 单例 -> ConfigurableBeanFactory#SCOPE_SINGLETON
  • 原型 -> ConfigurableBeanFactory#SCOPE_PROTOTYPE
  • 请求 -> WebApplicationContext#SCOPE_REQUEST
  • 会话-> WebApplicationContext#SCOPE_SESSION
  • 应用程序-> WebApplicationContext#SCOPE_APPLICATION
  • websocket -> 未定义(至少我没有找到)
于 2019-09-24T05:58:39.993 回答