当前位置: 首页 > 知识库问答 >
问题:

当单个控制器收到多个请求时,Spring如何处理线程安全性?

公冶嘉
2023-03-14

Spring中的单个控制器通常有许多请求映射。许多请求可能同时命中属于一个控制器(意味着一个类)的API。这不会导致线程安全问题吗?Q1)Spring控制器本质上是线程安全的吗?

我的答案是:默认情况下,Spring控制器是一个单例bean。它是否本质上是线程安全的取决于Spring如何实现单例模式。它可以是线程安全的,也可以是非线程安全的。对的

问题2)Spring是否提供了任何注释或配置来确保处理多个请求不会遇到线程安全问题?问题3)确保线程安全是开发人员自己的负担吗?

共有1个答案

景明诚
2023-03-14

关于Spring如何实现Singleton模式的第一个问题,请参阅以下链接:

单例Bean如何服务于并发请求?

Spring并发:Spring bean如何处理并发

SpringMVC如何处理多个用户

 类似资料:
  • 我一直在阅读有关多线程的Head First。我对多线程的了解是: 当我们使用Thread类的对象调用start()时,线程将进入可运行状态。因此,所有线程在通过这些线程的对象调用start()后都会进入可运行状态。它是JVM线程调度器,它从可运行状态随机选择线程,使其处于运行状态。进入运行状态后,该特定线程的已确定调用堆栈将被执行。 同样,JVM线程调度器可以通过将线程从运行状态切换到可运行状态

  • 根据请求主体中的session_type,我必须将请求映射到特定的POJO(JSON->JAVA POJO)。 例如,如果请求正文中的'session_type'是'typeX',那么请求应该映射到ClassX POJO。如果请求正文中的“session_type”是“type y”,那么请求应该映射到ClassY POJO。 如果有一种方法可以使用某种requestbody注释来完成它呢?

  • 我想扩展一个Spring应用程序的功能,包括一个HTTPendpoint,以接收贝宝即时支付通知。 Paypal在HTTP正文中发送这些内容,如下所示: MC_Gross=19.95&protection_eligibility=合格&address_status=确认状态s&txn_type=express_checkout&item_name=&mc_currency=usd&item_num

  • 我的Spring Boot应用程序中有一系列Rest API控制器,其请求映射与某些URL匹配。我需要更改我的实现,以始终确保为所有请求设置特定的自定义标头。如果标头不在那里,我想使请求失败。如果是这样,我想转发到适当的控制器,这将与我当前的实现相同。 有没有办法在Spring Boot做到这一点,而无需修改我现有的控制器呢?我可以尝试使用类似Spring Security的东西吗,即使我的头与安

  • 我正在使用Spring Boot构建一个RESTful web服务。我的IDE是Eclipse Oxygen。 这里是我的控制器代码: 我的控制台输出是: 控制台输出显示每5秒调用一次控制器。但我每隔两秒就发送一次请求。 是否可以接受来自同一会话的并发多个请求? 谢谢!

  • 我用以下方法编写了一个spring控制器来处理回调http请求, 但是我得到错误:由处理程序执行导致的已解决异常:org.springframework.web.HttpMediatypeNotSupportedException:不支持内容类型'application/octet-stream' 我不能更改回调http请求,因为它们来自其他第三方服务,我如何更改控制器以正确获取请求参数?