Есть ли статический способ получить HttpServletRequest текущего запроса
Я использую аннотации Spring, я могу передать HttpRequestContext из Контроллера в Службу.
Я ищу статический способ или лучшее решение, чем прохождение RequestContext.
Ответ 1
Я не думаю, что это хорошая идея. Уровень сервиса не должен знать или заботиться о том, имеет ли он дело с клиентом HTTP.
Статика не похожа на правильную идею. HttpRequestContext должен быть связан с экземпляром HttpRequest, а не с определенным классом.
Лучший дизайн, на мой взгляд, позволит получить все необходимые сервисы из контекста и передать его. Не нужно, чтобы служба была связана с HTTP или веб-уровнем.
Ответ 2
Если вы используете spring, вы можете сделать следующее:
public static HttpServletRequest getCurrentHttpRequest(){
RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes();
if (requestAttributes instanceof ServletRequestAttributes) {
HttpServletRequest request = ((ServletRequestAttributes)requestAttributes).getRequest();
return request;
}
logger.debug("Not called in the context of an HTTP request");
return null;
}