java是为spring mvc rest api或spring boot api对应用服务器的每个新请求创建的服务、存储库和组件的新实例吗?
在开发spring boot REST API或spring mvc REST API时,我们有用@Controller、@Service和@Repository注释的类。这些都在tomcat应用服务器后面工作
那么,当多个请求同时到达应用服务器时,是否为每个请求创建了控制器、服务和存储库的新实例?spring是如何处理的?bean的连接是在运行时进行的吗
DispatcherServlet是否创建新实例,并在新线程中为每个请求进行布线
我在哪里可以找到这些东西的技术细节和文档
提前感谢您的投入
# 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模块提供了不错的文档。你可以在这里找到它: