是否确保控制器是线程安全的?
如果上述情况属实,那么是否有必要为每个请求完成bean创建的开销,而不是让控制器代码不依赖于实例变量?
答案 0 :(得分:3)
您的默认位置应该是使用线程安全的单例控制器。这部分是出于性能原因,正如你所说,部分是出于良好设计的原因 - 大量有状态的,请求范围的bean是一团糟。
使用请求范围的控制器(或其他请求范围的bean)是一项特殊要求,您应该只在有充分理由这样做时使用,即您的bean的状态必须是该特定请求生命周期的私有状态
答案 1 :(得分:0)
请求范围bean是类的简短生存实例,它们将在新请求进入时创建。
Singleton bean可以在应用程序的整个生命周期中存在。注意:如果您有一个包含多个会话的多用户应用程序,则所有用户都将访问相同的Bean实例(如果它们是单例)。
我希望在Web应用程序中尽可能使用Request scoped bean。