单例筛选器中的Spring RequestScope服务错误

单例筛选器中的Spring RequestScope服务错误,spring,spring-boot,Spring,Spring Boot,我有一个微服务,它接收用户信息作为请求头。 我想将用户信息保存在RequestScoped bean中,以确保为每个请求设置了用户。 因此我写了这个过滤器: @Component public class UserSetFilter implements Filter { private final UserService userService; public UserSetFilter(UserService userService) { this.userService

我有一个微服务,它接收用户信息作为请求头。 我想将用户信息保存在RequestScoped bean中,以确保为每个请求设置了用户。 因此我写了这个过滤器:

@Component
public class UserSetFilter implements Filter {

 private final UserService userService;

 public UserSetFilter(UserService userService) {
     this.userService = userService;
 }

 @Override
 public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain chain) throws IOException, ServletException {
    final var user = ((HttpServletRequest) servletRequest).getHeader("user");
    userService.setUser(user);

    chain.doFilter(servletRequest, servletResponse);
 }
}
这是我的服务

@Service
@Scope(value = "request", proxyMode = ScopedProxyMode.TARGET_CLASS)
public class UserService {
  private String user;

  public void setUser(String user) {
    this.user = user;
  }

  public String getUser() {
     return user;
  }
}
一旦调用我的服务,就会出现异常:

原因:java.lang.IllegalStateException:未找到线程绑定请求:您是指实际web请求之外的请求属性,还是在原始接收线程之外处理请求?如果您实际上在web请求中操作,并且仍然收到此消息,那么您的代码可能在DispatcherServlet之外运行:在这种情况下,请使用RequestContextListener或RequestContextFilter公开当前请求


我怎样才能解决这个问题?如果不是这样,我如何才能实现我要做的事情?

您想通过
RequestScope
实现什么?您是否将您的
UserSetFilter
注册到spring中?我想您可能想查找
Proxy模式
根据我的理解,请参阅@Ashutosh
RequestScope是@Scope(value=WebApplicationContext.Scope\u REQUEST,proxyMode=ScopedProxyMode.TARGET\u类)的组合注释
正如您在这里看到的:@ismlydz我使用了RequestScope,它应该将作用域设置为Request,将代理模式设置为TARGET_类。然而,我试图用
@scope(value=“Request”,proxyMode=ScopedProxyMode.TARGET_CLASS)替换请求范围
,但仍然是相同的错误您试图从
请求范围
实现什么?您是否将您的
UserSetFilter
注册到spring中?我想您可能想查找
Proxy模式
根据我的理解,请参阅@Ashutosh
RequestScope是@Scope(value=WebApplicationContext.Scope\u REQUEST,proxyMode=ScopedProxyMode.TARGET\u类)的组合注释
正如您在这里看到的:@ismlydz我使用了RequestScope,它应该将作用域设置为Request,将代理模式设置为TARGET_类。然而,我试图用
@scope(value=“Request”,proxyMode=ScopedProxyMode.TARGET\u CLASS)替换请求范围,但仍然是相同的错误