gpt4 book ai didi

java - 单例 Spring Controller 中的依赖范围

转载 作者:行者123 更新时间:2023-12-02 02:03:22 24 4
gpt4 key购买 nike

在 Spring MVC 中, Controller (@Controller)是单例的。

假设我依赖于 Controller 中的服务类,并且该服务类具有原型(prototype)范围。在这样的场景下,

  1. 对于同时到达 Controller 的两个不同请求,我们是否会获得服务类的不同实例?

  2. 如果两个不同的请求只有一个服务类实例可用,那么两个请求中服务类函数内定义的局部变量是否会重叠?

最佳答案

  1. 没有。为了构造一个 Controller (它将是一个单例),我们需要一个服务实例。每次我们请求该服务时,都会创建一个新对象。一旦建立了 Controller (设置了所有依赖项),就不会发生其他注入(inject)。

考虑下面的例子。

controller1controller2 都需要该服务作为依赖项。对于每个 Controller ,将创建一个新实例。但它们不会因不同的请求而改变。

    request1 --> controller1 --> service1
request2 --> controller1 --> service1
request3 --> controller1 --> service1

request4 --> controller2 --> service2
request5 --> controller2 --> service2
request6 --> controller2 --> service2
  • 我不确定我是否正确理解了您的意思。如果局部变量与服务字段的名称相同,则它会部分隐藏该服务。通过 this.serviceVariable 访问将解决该问题。
  • 关于java - 单例 Spring Controller 中的依赖范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51234424/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com