Answers:
可以将请求范围的bean与请求对象自动连接。
private @Autowired HttpServletRequest request;
Spring 通过type 的包装对象公开当前HttpServletRequest
对象(以及当前HttpSession
对象)。此包装器对象绑定到ThreadLocal,可以通过调用方法获得。ServletRequestAttributes
static
RequestContextHolder.currentRequestAttributes()
ServletRequestAttributes
提供getRequest()
获取当前请求,getSession()
获取当前会话的方法以及获取存储在两个范围中的属性的其他方法。以下代码虽然有点难看,但应该可以在应用程序中的任何位置为您提供当前的请求对象:
HttpServletRequest curRequest =
((ServletRequestAttributes) RequestContextHolder.currentRequestAttributes())
.getRequest();
请注意,该RequestContextHolder.currentRequestAttributes()
方法返回一个接口,并且需要进行类型转换以ServletRequestAttributes
实现该接口。
春季Javadoc: RequestContextHolder | ServletRequestAttributes