【问题标题】:Spring. How does Spring manage Controllers春天。 Spring 是如何管理 Controller 的
【发布时间】:2019-12-05 11:28:16
【问题描述】:

我正在使用 spring 开发一个 API,但我有一些疑问。 想象一下,我有一个@Controller,其中一个端点需要 2 分钟来处理响应。 如果我同时向该特定端点与不同用户进行多次请愿。

Spring 如何管理它?是并发的吗?

理论上控制器是单例的,因此控制器在结束最后一个请求之前无法回答下一个请求。

谢谢

【问题讨论】:

    标签: java spring api controller


    【解决方案1】:

    控制器肯定是单例的,但它们可以同时访问。如此多的用户请求可以由同一个控制器并行处理。这就是为什么你的控制器应该是无状态的,也就是说,你不应该在控制器属性中存储用户数据。

    【讨论】:

    • 感谢您的回答,但我不明白。如果它是一个单例并且每个人都使用相同的对象。对象如何同时管理多个请求?我不明白这个
    • 完全正确 - 您始终可以同时调用同一个对象。为什么不?您的网络服务器负责初始化请求线程并为这些请求执行管理线程池。主要问题是:你的单例是“线程安全的”吗?这完全取决于你。在你的单例中存储请求相关的状态,你不会,一旦你收到并发请求,你就会得到随机错误。不要存储与请求相关的状态,你很好 - 你的单例将是“线程安全的”,这意味着“在多线程环境中使用安全”。
    • 我的意思是,我可以理解您可以同时修改对象、添加信息或提取它。但我不明白如何让一个对象同时执行相同的功能。
    猜你喜欢
    • 1970-01-01
    • 2013-12-08
    • 1970-01-01
    • 1970-01-01
    • 2011-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多