8 Ağustos 2017 Salı

SpringMVC RequestContextHolder Sınıfı

Giriş
Spring MVC projesinde kullanılır. Açıklaması şöyle
This will be populated by the standard spring mvc dispatch servlet.
currentRequestAttributes metodu
ServletRequestAttributes nesnesi döner. 
Örnek
Şöyle yaparız.
ServletRequestAttributes attr = (ServletRequestAttributes)
  RequestContextHolder.currentRequestAttributes();
getRequestAttributes metodu
Örnek
Şöyle yaparız
@Component
public class RequestUtils {

  private final ObjectMapper objectMapper;

  private static final String APP_CONTEXT_HEADER = "X-App-Context";
  private static final String REQUEST_ATTRIBUTE_APP_CONTEXT = "appContext";

  public RequestUtils(ObjectMapper objectMapper) {
    this.objectMapper = objectMapper;
  }

  public void storeContextInformationAsRequestAttribute(HttpServletRequest request)
throws IOException {
    String jsonHeader = request.getHeader(APP_CONTEXT_HEADER);

    if (jsonHeader != null) {
      request.setAttribute(REQUEST_ATTRIBUTE_APP_CONTEXT,
        objectMapper.readValue(jsonHeader, ContextInformation.class));
      }
  }

  public Optional<ContextInformation> getContextInformation() {
  return getAttributeFromRequest(REQUEST_ATTRIBUTE_APP_CONTEXT, ContextInformation.class);
  }

  private <T> Optional<T> getAttributeFromRequest(String attributeName, Class<T> type) {
    Object attribute = RequestContextHolder.getRequestAttributes()
.getAttribute(attributeName, 0);
    if (attribute != null && type.isAssignableFrom(attribute.getClass())) {
      return Optional.of((T) attribute);
    }
    return Optional.empty();
  }
}

Hiç yorum yok:

Yorum Gönder