Alice52 / spring-5.2.x

spring source code
https://github.com/Alice52/spring-5.2.x/issues/2
0 stars 1 forks source link

[mvc] HttpServletRequest #19

Open Alice52 opened 1 year ago

Alice52 commented 1 year ago

构建带有 Header 的HttpServletRequest

  1. 目的是为了应对 RequestContextHolder 获取上线文信息
  2. code

      public static void main(String[] args) {
    
          HttpServletRequestWrapper wrapper = new HttpServletRequestWrapper(new Request(null)) {
              @Override
              public String getHeader(String name) {
                  if (HISTORY_FLG_HEADER.equals(name)) {
                      return HISTORY_FLG_TRUE.toString();
                  }
                  return null;
              }
          };
    
          RequestAttributes bi = new ServletRequestAttributes(wrapper);
          RequestContextHolder.setRequestAttributes(bi);
    
          RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes();
          ServletRequestAttributes servletRequestAttributes = (ServletRequestAttributes)requestAttributes;
          String header = servletRequestAttributes.getRequest().getHeader(HISTORY_FLG_HEADER);
      }

reference

  1. autowire HttpServeletRequest 原理