我有一个ContainerRequestFilter
impl例如HeaderRequestFilter
,我想让它为每个请求实例化。我正在使用春季和平针织物。我尝试将@Scope("request")
置于HeaderRequestFilter
之上,但它实例化了一次,即单身。我想维护javax.ws.rs.core.UriInfo
,javax.ws.rs.core.Request
等州。因此,如果该类是单身人士,那么它将受到竞争条件的影响。
有人可以帮我解决这个问题吗?感谢。
答案 0 :(得分:2)
默认情况下,就像所有其他提供程序一样,单个实例 为每个JAX-RS实例化每个过滤器或实体拦截器 应用。 (......)实施可以提供替代生命周期 超出默认选项的选项。
我不知道是否有任何实现提供不同的生命周期。
例如,你不需要害怕比赛条件通过HttpServletRequest
注入@Context
。该规范在第9.1章中明确指出:
上下文特定于特定请求但具体是某些实例 JAX-RS组件(具有生命周期的提供者和资源类) 除了每个请求)可能需要支持多个并发 要求。注入时所列类型之一的实例 9.2节,提供的实例必须能够选择 正确的特定请求的上下文。使用线程本地代理 是实现这一目标的常用方法。