我有一个常规bean,它要么是(a)@Scope("request"),要么是(b)通过过滤器/拦截器放在HttpServletRequest中。如何在@Service中访问这个bean,@Service是一种应用程序范围的单例?这样做的原因是,因为我有一个自定义对象RequestContext,其中包含一些请求元数据(主要是来自自定义httpHeaders的信息)。
@Scope("request")
HttpServletRequest
@Service
RequestContext
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应用程序
1条答案
按热度按时间6yt4nkrj1#
只要bean被声明为请求作用域,Spring就会处理其余的事情。
以通常的方式访问bean,只需自动连接即可。
服务bean将是一个sigleton,但在其背后,RequestContext bean附加到线程,因此每次调用方法时,您将获得不同的示例。
请注意,您必须具有Web上下文,即运行Web服务器/Web应用程序