阻止Spring MVC控制器?

时间:2016-11-24 13:41:43

标签: spring multithreading spring-mvc controller

所以根据this question Spring Controller是单例,每个web应用都有一个。这对我来说没有意义 - 如果有多个用户连接到同一个Controller并且其中一个用户启动了一些长时间运行的任务,则意味着其他人将被阻止,直到Controller被解锁。我肯定错过了什么。 THX。

1 个答案:

答案 0 :(得分:1)

Spring Controller是单例范围的bean,意味着每个Spring Application Context只能存在一个bean。所以它不是 by-nature 单身,比如说一些Singleton-Design-Pattern开发的类,而是 by-virtue 并保证Spring框架。

您所描述的内容听起来像是在Controller方法上发生的假设同步,只允许一个请求在未发生的情况下通过,因为您的Controller方法最多当然不是synchronized

因此,可能会降低您的请求速度的事情就像Web容器的最大请求线程(如果我在Tomcat中默认正确记得100)或网络延迟或资源消耗延迟(即DB)。