SpringBoot通过RequestContextHolder获取HttpRequest和HttpResponse
开发时,有时候会遇到在一些方法中,函数参数并没有给出request,response或者session,那该怎么解决呢
我们可以通过SpringBoot提供的RequestContextHolder获得
package com.test.common.util;
import com.test.exception.LogicException;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import javax.servlet.http.HttpServletRequest;
/**
* 获取当前请求的用户ID
*/
public class UserHolder {
public static final String OPERATOR = "userId";
public static String getUserId() {
HttpServletRequest request = ((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getRequest();
String user = request.getHeader(OPERATOR);
if (user != null) {
return user.toUpperCase();
}
throw new LogicException("无法获取用户id");
}
}