在 Spring MVC 中,何时对控制器使用请求作用域 bean 而不是单例 bean

Sat*_*was 2 java spring spring-mvc

是为了确保控制器是线程安全的吗?

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

ska*_*man 5

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

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