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

spring如何同时向多个请求提供单例bean

何松
2023-03-14

对于Spring,如果我有两个请求同时访问singleton bean呢?一个请求是否必须等到另一个请求完成。Spring容器如何为我的请求找到单例bean实例?

对于servlet,如果我有两个请求同时访问正常类的正常方法(没有静态没有其他复杂的东西)?一个请求是否必须等到另一个请求完成才能避免并发(同时两个请求试图访问同一类的对象)。Web容器如何找到我的请求的实例?

共有1个答案

裴凯定
2023-03-14

对于Spring,如果有两个请求同时访问singletonbean呢?一个请求是否必须等到另一个请求完成?

SpringContainer为SingletonBean类(比如控制器、服务类等)创建一个且仅一个实例。在Java中,有几种方法可以安全地为一个类创建单例实例,您可以在这里查看更多信息。一旦Spring容器创建了singleton实例,那么web请求将使用控制器/服务类的单个实例提供服务。

此外,即使两个请求访问singleton bean,也没有问题(即,中间不会有任何等待),因为它们将在两个单独的线程中提供服务,并且您需要确保控制器和服务类(即singleton作用域bean)不携带/保持任何状态(即,它们是无状态的)并且是线程安全的。

Spring容器如何为我的请求找到单例bean实例?

SpringContainer根据您使用xml或通过注释提供的配置创建并注入SingletonBean实例。

对于servlet,如果我有两个请求同时访问一个普通类的普通方法(没有静态的,没有其他复杂的东西)?一个请求是否必须等到另一个请求完成才能避免并发(同时两个请求试图访问同一类的对象)?

不,每个请求都将在一个单独的线程中处理,因此一个请求不会等待另一个请求被服务/完成,也就是说,这些请求将被并行地服务/处理。这是由Web容器通过使用/管理线程池来实现的。

web容器如何找到我的请求的实例?

Web容器(如Tomcat等)创建并加载所有servlet类(如Spring的DispatcherServlet或您自己的自定义servlet),然后一旦Web请求来自客户端(如浏览器),它将根据Web.xml中配置的url模式或通过注释处理到servlet。

 类似资料:
  • 如果是的话,有谁能向我解释如何做到这一点?

  • 是否可以在webclient上将多个请求链接在一起?例如,我希望在进行交易时能够更新买方和卖方的余额。现在它只更新买家余额: 是否有一种方法可以将两个put方法调用在一起,以便更新两个余额? 更新:此方法适用于将单声道值作为uri变量调用。

  • 这是在收到以db为单位的帖子列表后发送带有每个帖子链接数据的POST请求的代码。 在使用每个链接请求帖子后,从回复中提取playerCount并将其更新到每个帖子。 我在这段代码中使用Resttemplate,但有一个问题需要花费太长时间。 所以我想把这个代码改为一次发送一个请求,并在所有请求完成后更新每个帖子。 我怎样才能把这个代码转换成我想要的? 我将使用此代码作为计划任务。

  • 我一直在努力理解春豆。根据我的理解,默认情况下所有bean都是singleton,并且在第一次请求时创建具有lazy-init属性设置为true的singleton bean,在创建应用程序上下文时创建具有lazy-init属性设置为false的singleton bean。 因此,在应用程序中,当一个用户请求进来时(每个请求都是一个单独的线程),当在程序/类中被请求时,所有这些线程是否共享相同的

  • 我对在PHP中一次提交多个请求持怀疑态度。我有一个php函数,比如insertOrder()来将详细信息插入数据库表并向用户发送通知。详细信息将从另一个来源自动发布到此功能。这些是insertOrder()中的步骤 启动Mysql事务 从OrderID=123的数据库表中选择订单计数(来自post数据) 如果COUNT=0,则插入数据库表并发送通知 如果不是0,则更新顺序 提交 问题在于,有时系统

  • 我正在寻找一个sql请求,它将提供这种结果。 最好使用雄辩的语言。 当前解决方案: