@Autowired HttpServletResponse - PullRequest
       11

@Autowired HttpServletResponse

13 голосов
/ 08 августа 2011

Я ищу способ автопроводки HttpServletResponse. Он не работает с пружиной из коробки, но я нашел это описание . Это работает, но немного раздражает, так как в этой весне, очевидно, есть механизм, позволяющий ограничивать объем запросов к объектам (т. Е. HttpServletRequest), и это похоже на взлом на вершине.

Есть ли способ подключиться к тому же механизму, который используется пружиной для HttpServletRequest? И есть идеи, почему команда Spring решила сделать HttpServletRequest способной к автопроводке (и исключила HttpServletResponse)?

Ответы [ 2 ]

9 голосов
/ 08 августа 2011

Возможно, есть какой-то обходной путь, но это не так очевидно, потому что это не так, как должно быть.Spring MVC предназначен для использования одноэлементных @Controller bean-компонентов, предоставляющих @RequestMapping методы, которые принимают запрос и ответ в качестве аргументов.

Если вам нужен ответ в другом месте (уровень обслуживания) - не делайтеЭто.Ответ не должен выходить за пределы веб-уровня (контроллера).

Чтобы ввести ответ, вам необходимо: - сохранить ответ в ThreadLocal - создать фабричный компонент, который возвращает текущий ответ

About пример кода, который вы показали- Я не уверен, что вам не понадобится фабричный компонент для возврата прокси (реализующий HttpServletResponse), который в свою очередь возвращает текущий ответ.И это становится довольно сложным.

Но в конечном итоге - вы не должны этого делать.Если вам нужно перехватить несколько вызовов контроллера, используйте mvc-перехватчик.Если вам действительно нужно использовать аспект, вы можете получить ответ, если он передан в качестве аргумента перехваченному методу.

4 голосов
/ 08 августа 2011

Вы можете просто включить запрос в дескриптор метода?

@RequestMapping(method=Method.GET, value="myUrl")
public String doGet(HttpServletResponse response){//spring will put the response in for you
  ... 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...