Spring:如何将 HttpServletRequest 注入到请求范围的 Bean 中?
我正在尝试在春季设置一个请求范围的bean。
我已经成功设置了它,因此每个请求创建一次Bean。现在,它需要访问 HttpServletRequest 对象。
由于每个请求创建一次Bean,我认为容器可以很容易地将请求对象注入我的Bean中。我该怎么做?
我正在尝试在春季设置一个请求范围的bean。
我已经成功设置了它,因此每个请求创建一次Bean。现在,它需要访问 HttpServletRequest 对象。
由于每个请求创建一次Bean,我认为容器可以很容易地将请求对象注入我的Bean中。我该怎么做?
Spring 通过 类型的包装器对象公开当前对象(以及当前对象)。此包装器对象绑定到 ThreadLocal,并通过调用方法 获得。HttpServletRequest
HttpSession
ServletRequestAttributes
static
RequestContextHolder.currentRequestAttributes()
ServletRequestAttributes
提供了获取当前请求的方法、获取当前会话的方法和其他方法,以获取存储在两个作用域中的属性。下面的代码虽然有点难看,但应该在应用程序中的任意位置获得当前请求对象:getRequest()
getSession()
HttpServletRequest curRequest =
((ServletRequestAttributes) RequestContextHolder.currentRequestAttributes())
.getRequest();
请注意,该方法返回一个接口,并且需要类型转换为实现该接口的方法。RequestContextHolder.currentRequestAttributes()
ServletRequestAttributes
Spring Javadoc: RequestContextHolder |ServletRequestAttributes
请求范围的 Bean 可以与请求对象自动连接。
private @Autowired HttpServletRequest request;