【发布时间】:2018-09-03 08:14:02
【问题描述】:
我正在使用 Spring 启动。我对 Spring Boot Bean 有一些疑问。
但我有疑问
我使用的是默认范围的 bean,它是单例的。所以每个应用程序只有一个实例。
@Configuration
public class ...{
@Bean
public void method() {}
}
和
现在我使用范围是原型的bean。所以他们将拥有每个请求的每个实例。
@Configuration
public class ...{
@Bean
@Scope("prototype")
public void method() {}
}
但是
我想要每个用户一个实例..?所有请求都使用每个用户的单个实例。
【问题讨论】:
-
原型范围不是每个请求!。为每个用户定义实例?如果您需要实现自己的范围,那么会话范围是否足够。
-
@M.Deinum 但是当使用原型作用域时,它们就像每个请求一样工作。
-
不,他们没有。每个方法调用都会导致 bean 的一个新实例(因此,如果您在 bean 上调用 2 个方法,您将获得 2 个实例而不是 1 个)。至少在正确用作范围代理时!。
-
@KailasBiradar 原型!=请求范围。 Prototype 会在每次请求时为您提供新的 bean - 这可能会在单个请求中发生多次。
-
@Antoniossss 好的
标签: spring spring-boot