gpt4 book ai didi

java - 是否为 spring mvc rest api 或 spring boot api 对应用程序服务器的每个新请求创建了新的 Service、Repository 和 Component 实例?

转载 作者:行者123 更新时间:2023-12-05 00:53:41 25 4
gpt4 key购买 nike

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

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

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

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

提前感谢您的意见

最佳答案

那么当多个请求同时到达应用服务器时,是否为每个请求创建了一个新的 Controller 、服务和存储库实例?

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

您可以了解有关 bean 范围的更多信息 on Spring's documentation .

每个请求都在单独的线程中到达,因此在实现单例 bean 时需要使它们成为线程安全的。

spring 是如何处理的?

Spring 通过实现 here 中描述的 IoC 容器来处理这个问题。 .

bean 的连接是否发生在运行时?

Bean 连接发生在应用程序上下文启动时,除非您将 Bean lazy如果是这样,bean 将在第一次请求 bean 时启动。

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

不,除非您将 bean 指定为非单例范围。

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

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

关于java - 是否为 spring mvc rest api 或 spring boot api 对应用程序服务器的每个新请求创建了新的 Service、Repository 和 Component 实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67265229/

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