Java 多线程请求在Spring中共享相同的单例bean吗?

Java 多线程请求在Spring中共享相同的单例bean吗?,java,spring,lazy-loading,Java,Spring,Lazy Loading,我一直在努力理解春豆。根据我的理解,默认情况下,所有bean都是singleton,并且在第一次请求时创建一个lazy init属性设置为true的singleton bean,在创建应用程序上下文时创建一个lazy init属性设置为false的singleton bean 因此,在应用程序中,当用户请求进来时(每个请求都是一个单独的线程),当在程序/类中被请求时,所有这些线程是否共享相同的单例bean?是的,默认情况下(scope='singleton'),所有线程将共享相同的单例bean。

我一直在努力理解春豆。根据我的理解,默认情况下,所有bean都是singleton,并且在第一次请求时创建一个lazy init属性设置为true的singleton bean,在创建应用程序上下文时创建一个lazy init属性设置为false的singleton bean

因此,在应用程序中,当用户请求进来时(每个请求都是一个单独的线程),当在程序/类中被请求时,所有这些线程是否共享相同的单例bean?

是的,默认情况下(scope='singleton'),所有线程将共享相同的单例bean。还有另外两个bean作用域,
session
request
,这可能就是您要寻找的。
请求
范围为单个HTTP请求创建一个bean实例,而
会话
范围为每个HTTP会话维护一个唯一的bean

要查看所有Springbean作用域的列表和描述,请查看:

是,默认情况下(作用域=='singleton'),所有线程将共享同一个singletonbean。还有另外两个bean作用域,
session
request
,这可能就是您要寻找的。
请求
范围为单个HTTP请求创建一个bean实例,而
会话
范围为每个HTTP会话维护一个唯一的bean


要查看所有Springbean作用域的列表和描述,请检查:

是,如果bean是使用默认作用域创建的,那么bean将在线程之间共享。但是,可以使用另一个范围来实现您提到的行为。
请参阅:?

是,如果bean是使用默认作用域创建的,那么该bean将跨线程共享。但是,可以使用另一个范围来实现您提到的行为。
请看:?

我会小心这个想法。在某些框架中,bean可以从一个服务器移动到另一个服务器(一个“服务器”实际上可能是一个服务器集群)。在这种情况下,一个系统中所有线程共享的单个对象可能不再是事实。@markspace即使在Spring中,单例bean在应用程序上下文(实例)中也只是单例。缩放4个实例,你有4个副本。我也这么想。我只是想确保OP意识到所有的可能性,以防影响他们的设计。我会小心这个想法。在某些框架中,bean可以从一个服务器移动到另一个服务器(一个“服务器”实际上可能是一个服务器集群)。在这种情况下,一个系统中所有线程共享的单个对象可能不再是事实。@markspace即使在Spring中,单例bean在应用程序上下文(实例)中也只是单例。缩放4个实例,你有4个副本。我也这么想。我只是想确保OP了解所有的可能性,以防它影响他们的设计。