Spring: как я ввожу HttpServletRequest в ограниченный по объему запросом боб?

Я пытаюсь настроить ограниченный по объему запросом боб в Spring.

Я успешно настроил его так, боб создается однажды на запрос. Теперь, это должно получить доступ к объекту HttpServletRequest.

Так как боб создается однажды на запрос, я полагаю, что контейнер может легко ввести объект запроса в моем бобе. Как я могу сделать это?

93
задан skaffman 24 July 2010 в 07:28
поделиться

2 ответа

Компоненты с ограниченным объемом запроса могут быть автоматически связаны с объектом запроса.

private @Autowired HttpServletRequest request;
106
ответ дан 24 November 2019 в 06:14
поделиться

Spring раскрывает текущий объект HttpServletRequest (а также текущий объект HttpSession) через объект wrapper типа ServletRequestAttributes. Этот объект-обертка привязан к ThreadLocal и получается вызовом статического метода RequestContextHolder.currentRequestAttributes().

ServletRequestAttributes предоставляет метод getRequest() для получения текущего запроса, getSession() для получения текущей сессии и другие методы для получения атрибутов, хранящихся в обоих диапазонах. Следующий код, хотя и немного уродливый, должен получить объект текущего запроса в любом месте приложения:

HttpServletRequest curRequest = 
((ServletRequestAttributes) RequestContextHolder.currentRequestAttributes())
.getRequest();

Обратите внимание, что метод RequestContextHolder.currentRequestAttributes() возвращает интерфейс и должен быть приведен к ServletRequestAttributes, который реализует этот интерфейс.


Spring Javadoc: RequestContextHolder | ServletRequestAttributes

127
ответ дан 24 November 2019 в 06:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: