有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java是为spring mvc rest api或spring boot api对应用服务器的每个新请求创建的服务、存储库和组件的新实例吗?

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

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

DispatcherServlet是否创建新实例,并在新线程中为每个请求进行布线

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

提前感谢您的投入


共 (1) 个答案

  1. # 1 楼答案

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

    答案是否定的。默认情况下,所有用@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为核心模块和Web模块提供了不错的文档。你可以在这里找到它: