Spring 中的请求范围 bean 意味着容器为每个 HTTP 请求创建一个 bean 实例。
假设我有一个 RequestScopedBean bean:
@Component
public class RequestScopedBean {
@PostConstruct
void init() {
System.out.println("Init method called for each incoming HTTP Request");
}
}
public void doSomething() {}
配置 :
@Configuration
public class MyBeansConfig {
@Bean
@Scope(value="request", proxyMode=TARGET_CLASS)
public RequestScopedBean requestScopedBean() {
return new requestScopedBean();
}
}
我在 Singleton bean 中使用我的RequestScopedBean -我期望为每个传入的 HTTP 请求调用 init() 方法。但事实并非如此。init() 方法只被调用一次,这意味着容器只创建我的RequestScopedBean的一个实例!!!有人可以向我解释一下:如果我期望的行为是正确的/或者配置有什么问题。