Servlets HttpServletRequest.setAttribute vs ThreadLocal vs RequestContextHolder

Servlets HttpServletRequest.setAttribute vs ThreadLocal vs RequestContextHolder,servlets,thread-local,setattribute,getattribute,Servlets,Thread Local,Setattribute,Getattribute,我需要有一个特定于请求的对象,并在整个web应用程序中使用该对象来获取/设置它的值,以便为特定请求执行业务逻辑。我可以使用request.setAttribute/request.getAttribute还是应该使用ThreadLocal。我的理解是,每个请求都由线程池中的一个单独线程处理。我在一个Spring Web应用程序中看到了这一点。我还可以看到一个RequestContextHolder,不确定哪一个适合似乎您希望应用程序范围的属性可用于每个特定的请求。为此,可以使用request.g

我需要有一个特定于请求的对象,并在整个web应用程序中使用该对象来获取/设置它的值,以便为特定请求执行业务逻辑。我可以使用request.setAttribute/request.getAttribute还是应该使用ThreadLocal。我的理解是,每个请求都由线程池中的一个单独线程处理。我在一个Spring Web应用程序中看到了这一点。我还可以看到一个RequestContextHolder,不确定哪一个适合似乎您希望应用程序范围的属性可用于每个特定的请求。为此,可以使用request.getServletContext().setAttribute()和request.getServletContext().getAttribute()。ServletContext表示应用程序,因此使用它设置的属性在应用程序的生命周期内可用,并且可以由多个请求使用。

需要请求特定对象而不是应用程序范围。请澄清问题,您说“……并在web应用程序中使用相同的对象来获取/设置值……”.我指的是一个对象,用于跨不同web组件执行一个请求线程(特定于请求的对象)的整个过程