HttpServletRequest request.setAttribute 对比 ThreadLocal 对比 RequestContextHolder

HttpServletRequest request.setAttribute vs ThreadLocal vs RequestContextHolder

我需要一个特定于请求的对象,并在 Web 应用程序中使用同一个对象来为它 get/set 赋值,以执行特定请求的业务逻辑。我可以使用 request.setAttribute/request.getAttribute 还是应该使用 ThreadLocal。我的理解是每个请求都由线程池中的一个单独线程处理。我在 Spring Web 中有这个 Application.I 也可以看到 RequestContextHolder ,不确定哪个合适

您似乎希望应用程序范围的属性可用于每个特定请求。为此,您可以使用 request.getServletContext().setAttribute() 和 request.getServeltContext().getAttribute()。 ServletContext 表示应用程序,因此使用它设置的属性在应用程序的生命周期内可用,并且可以被多个请求使用。