何时对Spring MVC中的控制器使用请求范围的bean而不是单例bean

时间:2011-08-17 06:37:27

标签: java spring spring-mvc

是否确保控制器是线程安全的?

如果上述情况属实,那么是否有必要为每个请求完成bean创建的开销,而不是让控制器代码不依赖于实例变量?

2 个答案:

答案 0 :(得分:3)

您的默认位置应该是使用线程安全的单例控制器。这部分是出于性能原因,正如你所说,部分是出于良好设计的原因 - 大量有状态的,请求范围的bean是一团糟。

使用请求范围的控制器(或其他请求范围的bean)是一项特殊要求,您应该只在有充分理由这样做时使用,即您的bean的状态必须是该特定请求生命周期的私有状态

答案 1 :(得分:0)

请求范围bean是类的简短生存实例,它们将在新请求进入时创建。

Singleton bean可以在应用程序的整个生命周期中存在。注意:如果您有一个包含多个会话的多用户应用程序,则所有用户都将访问相同的Bean实例(如果它们是单例)。

我希望在Web应用程序中尽可能使用Request scoped bean。