原文网址:SpringBoot--手动获取HttpServletRequest_IT利刃出鞘的博客-CSDN博客
简介
本文介绍SpringBoot如何在任意地方获取HttpServletRequest。
此法可以用在请求链中的任意地方,比如:Controller、Service、非Bean对象。
法1:getRequestAttributes(推荐)
用法
ServletRequestAttributes servletRequestAttributes =
(ServletRequestAttributes)RequestContextHolder.getRequestAttributes();
HttpServletRequest request = servletRequestAttributes.getRequest();
说明
它可以让新建的子线程也获取到attribute,方法是:
RequestContextHolder.setRequestAttributes(RequestContextHolder.getRequestAttributes(), true);
法2:currentRequestAttributes
ServletRequestAttributes servletRequestAttributes =
(ServletRequestAttributes)RequestContextHolder.currentRequestAttributes();
HttpServletRequest request = servletRequestAttributes.getRequest();
线程安全性
是线程安全的。