是否为 spring mvc rest api 或 spring boot api 到应用程序服务器的每个新请求创建服务、存储库和组件的新实例?
Are new instances of Service, Repository and Component created for every new request of spring mvc rest api or spring boot api to application server?
在开发 spring-boot REST API 或 spring-mvc REST API 时,我们 类 使用@Controller、@Service 和@存储库。这些都在 tomcat 应用程序服务器后面工作。
那么当多个请求同时到达应用服务器时,是否为每个请求创建一个新的控制器、服务和存储库实例? spring 是如何处理的? bean 的连接是否发生在运行时?
DispatcherServlet 是否创建新实例并在新线程中为每个请求进行连接?
我在哪里可以找到这些东西的技术细节和文档。
提前感谢您的意见
那么当多个请求同时到达应用服务器时,是否为每个请求创建一个新的控制器、服务和存储库实例?
答案是否定的。默认情况下,所有使用 @Controller
、@Service
、@Repository
、@Component
、@Bean
或任何其他 bean 定义样式定义的 Spring bean 都是急切的单例并且 spring 在应用程序启动时只创建一个实例。
您可以了解有关 bean 作用域的更多信息 on Spring's documentation。
每个请求都到达一个单独的线程,因此在实现单例 bean 时需要使它们线程安全。
spring如何处理?
Spring 通过实现描述为 here.
的 IoC 容器来处理这个问题
bean 的连接是否发生在运行时?
Bean 连接发生在应用程序上下文启动时,除非您创建 bean lazy 如果是这样,bean 将在第一次请求 bean 时启动。
DispatcherServlet 是否创建新实例并在新线程中为每个请求进行连接?
不,除非您将 bean 指定为非单例范围。
我在哪里可以找到这些东西的技术细节和文档?
Spring 有不错的核心和网络模块文档。你可以在这里找到它:
在开发 spring-boot REST API 或 spring-mvc REST API 时,我们 类 使用@Controller、@Service 和@存储库。这些都在 tomcat 应用程序服务器后面工作。
那么当多个请求同时到达应用服务器时,是否为每个请求创建一个新的控制器、服务和存储库实例? spring 是如何处理的? bean 的连接是否发生在运行时?
DispatcherServlet 是否创建新实例并在新线程中为每个请求进行连接?
我在哪里可以找到这些东西的技术细节和文档。
提前感谢您的意见
那么当多个请求同时到达应用服务器时,是否为每个请求创建一个新的控制器、服务和存储库实例?
答案是否定的。默认情况下,所有使用 @Controller
、@Service
、@Repository
、@Component
、@Bean
或任何其他 bean 定义样式定义的 Spring bean 都是急切的单例并且 spring 在应用程序启动时只创建一个实例。
您可以了解有关 bean 作用域的更多信息 on Spring's documentation。
每个请求都到达一个单独的线程,因此在实现单例 bean 时需要使它们线程安全。
spring如何处理?
Spring 通过实现描述为 here.
的 IoC 容器来处理这个问题bean 的连接是否发生在运行时?
Bean 连接发生在应用程序上下文启动时,除非您创建 bean lazy 如果是这样,bean 将在第一次请求 bean 时启动。
DispatcherServlet 是否创建新实例并在新线程中为每个请求进行连接?
不,除非您将 bean 指定为非单例范围。
我在哪里可以找到这些东西的技术细节和文档?
Spring 有不错的核心和网络模块文档。你可以在这里找到它: