gpt4 book ai didi

java - 我可以在 spring mvc 应用程序中池化 Controller 吗?如果可以的话,它将如何影响性能?

转载 作者:行者123 更新时间:2023-12-01 18:44:18 24 4
gpt4 key购买 nike

在 spring 3.0 中,只需将类注释为 @Controller 即可创建 Controller ,并且默认情况下是单例的。

因此,为了满足许多请求,容器将只有一个该类型的对象。

反之,如果是原型(prototype),则会创建很多对象,因此资源利用率会很差。

如有错误,请指正。我的问题是我可以集中 Controller 吗?如果可以,那么它会提高并发性和吞吐量吗?

最佳答案

您是正确的,默认情况下所有 Controller 都是单例的。

除非您的 Controller 是有状态的,否则不需要有实例池。您的 Web 容器将使用托管线程池来处理请求,每个线程都可以同时访问 Controller (因为没有共享状态)。我建议调整您的 Web 容器将为您带来更好的并发性和吞吐量结果。

如果您的 Controller 是有状态的,那么仍然不需要实例池。相反,您应该管理 Session 内的状态或Request作用域 bean 并依赖 Spring 在每个请求上将它们注入(inject)到 Controller 中,确保多个执行线程不会相互干扰。

鉴于您目前的理解水平,您应该对不同的范围相当满意。我建议您还阅读并理解 Spring 如何利用 Proxys将作用域 bean 注入(inject)到 Controller 中。

关于java - 我可以在 spring mvc 应用程序中池化 Controller 吗?如果可以的话,它将如何影响性能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18508829/

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