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

是否为spring mvc rest api或spring boot api对应用服务器的每个新请求创建了服务、存储库和组件的新实例?

东郭兴学
2023-03-14

在开发spring-bootREST API或spring-mvc REST API时,我们有用@Controller、@Service和@Repository注释的类。这些都在tomcat应用程序服务器后面工作。

那么,当多个请求同时到达应用服务器时,是否为每个请求创建了控制器、服务和存储库的新实例?spring是如何处理的?bean的连接是在运行时进行的吗?

DispatcherServlet是否创建新实例,并在新线程中为每个请求进行布线?

我在哪里可以找到这些东西的技术细节和文档。

提前感谢您的意见

共有1个答案

李云
2023-03-14

答案是否定的。默认情况下,所有用@Controller@Service@Repository@Component@Bean或任何其他Bean定义样式定义的Spring Bean都是渴望的单例,Spring在应用程序启动时只创建一个实例。

您可以在Spring的留档中了解有关bean范围的更多信息。

每个请求都会在一个单独的线程中到达,所以在实现单例bean时,需要使它们具有线程安全性。

Spring通过实现IoC容器来处理这一问题,本文对此进行了描述。

bean连接发生在应用程序上下文启动时,除非您使bean变懒。如果是这样,bean将在对bean的第一个请求时启动。

不,除非您将bean指定为非单例作用域。

Spring为核心模块和Web模块提供了不错的文档。你可以在这里找到它:

  • 核心
 类似资料:
  • 这是一个简单的场景: 用户从Web应用程序的网页触发一些操作。这个操作很重,需要更多的时间。 在操作在服务器端完成之前,用户触发器会用一些不同的参数表示相同的操作。因此,第二个请求的第二个操作也将开始处理。 在这种情况下,是否有两个不同的线程,比如第一个线程处理第一个请求,另一个线程处理第二个请求?或者它只是一个线程处理两个请求,第一个操作只是为了执行第二个请求而被中断(未完成)? 在这里,我不想

  • 我尝试分析一个gRPC java服务器。我主要看到下面的一组线程池。 null

  • 和类似的服务: 我用的是12个实体,大家的服务方式都一样。 谢谢!

  • 问题内容: 我有一堂课 不确定规范对HTTPServlet的回收有何评论:servlet容器是否应该在每个传入请求上创建此类的新实例,或者实现可以在请求之间重用类? 我正在调查一个有趣的问题,其中似乎是在GAE_SERVLETREQUESTServlet实例上创建的Map保持了请求之间的状态。 问题答案: 对于一般情况-非分布式,多线程的,可以保证只有servlet的一个实例。根据Servlet

  • 我有一个非常简单的Vert。公开pingendpoint的x应用程序: 正如预期的那样,默认情况下为Vert。x创建了两个我可以通过VisualVM看到的事件循环线程: 当然,这个应用程序什么都不做,所以我知道你可以去给PingVerticle添加一个http服务器 现在,我在VisualVM中看到有两个新线程,一个接受线程,我可以或多或少理解,另一个事件循环线程: 为什么要创建第三个eventl

  • 单击通知、服务创建新活动和活动创建新服务? 我的应用MainActivity“OnCreate”创建一个“粘性”的服务。 在我的服务中,当有一些通知时,我会发布多个通知。除非用户进入应用程序并阅读通知,否则通知将在那里。在onStartCommand中检查新通知。 按下通知将发送打开MainActivity的意图。 有服务、主要活动和通知。 一段时间后,MainActivity被系统杀死。 单击通