我有一颗普通豆,它是 (a)@Scope("request")
或 (b) 放置在HttpServletRequest
通过过滤器/拦截器。
如何在 a 中访问这个 bean@Service
哪一种是应用程序范围的单例?
这样做的原因是,因为我有一个自定义对象RequestContext
带有一些请求元数据(主要来自自定义 httpHeaders 的信息)。要知道,我将此对象作为参数传递给每个服务上的每个方法,这是很多样板代码。
只要bean被声明为请求范围,Spring就会处理剩下的事情。
@Bean
@Scope(value = WebApplicationContext.SCOPE_REQUEST, proxyMode = ScopedProxyMode.TARGET_CLASS)
public RequestContext requestContext() {
return new RequestContext();
}
以通常的方式访问 bean,只需自动装配它即可。
@Autowired
private RequestContext requestContext;
Service bean 将是一个 sigleton,但在幕后,RequestContext bean 附加到线程,因此每次调用方法时您都会获得不同的实例。
注意您必须有一个 WEB 上下文,即运行 WEB 服务器/WEB 应用程序
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)