Spring MVC 访问服务中的请求作用域Bean

3phpmpom  于 2022-11-14  发布在  Spring
关注(0)|答案(1)|浏览(129)

我有一个常规bean,它要么是(a)@Scope("request"),要么是(b)通过过滤器/拦截器放在HttpServletRequest中。
如何在@Service中访问这个bean,@Service是一种应用程序范围的单例?
这样做的原因是,因为我有一个自定义对象RequestContext,其中包含一些请求元数据(主要是来自自定义httpHeaders的信息)。

6yt4nkrj

6yt4nkrj1#

只要bean被声明为请求作用域,Spring就会处理其余的事情。

@Bean
@Scope(value = WebApplicationContext.SCOPE_REQUEST, proxyMode = ScopedProxyMode.TARGET_CLASS)
public RequestContext requestContext() {
    return new RequestContext();
}

以通常的方式访问bean,只需自动连接即可。

@Autowired
private RequestContext requestContext;

服务bean将是一个sigleton,但在其背后,RequestContext bean附加到线程,因此每次调用方法时,您将获得不同的示例。

请注意,您必须具有Web上下文,即运行Web服务器/Web应用程序

相关问题