我知道这个问题可能听起来很幼稚,但我对web应用程序中bean的范围有些困惑。我知道对于每个请求,容器都会生成一个新的线程,同样地,在spring web应用程序的情况下,每个请求都会生成一个新的线程。那么为什么建议将我的控制器、服务定义为单例?难道这些bean的作用域不应该是原型吗?因为每个请求即线程都将拥有自己的控制器、服务实例来处理。
请给我启示。
请给我启示。
这将会增加很大的开销。如果您正确地使代码线程安全,通常意味着不在bean上保留每个请求的状态,那么每个请求都不需要自己的服务bean。
我认为这取决于您是否需要在bean中存储任何状态。通常,我编写单例时会确保其内部不包含任何状态,仅用于计算业务逻辑。如果不需要管理状态,则可以让所有线程共享该单例实例。