Ответ 1
Возможно, есть некоторое обходное решение, но это не так очевидно, потому что это не так, как должно было быть. Spring MVC должен иметь singleton @Controller
beans, который предоставляет методы @RequestMapping
, которые принимают запрос и ответ в качестве аргументов.
Если вам нужен ответ в другом месте (уровень сервиса) - не делайте этого. Ответ не должен выходить за пределы уровня сети (контроллера).
Чтобы ввести ответ, вам необходимо:
- сохранить ответ в ThreadLocal
- создать factory bean, который возвращает текущий ответ
О пример кода, который вы показали - Я не уверен, что вам не понадобится factory bean, чтобы вернуться прокси (реализация HttpServletResponse
), который, в свою очередь, возвращает текущий ответ. И это становится довольно сложным.
Но в конечном счете - вы не должны этого делать. Если вам нужно перехватить вызовы нескольких контроллеров, используйте mvc-перехватчик. Если вам действительно нужно использовать аспект, вы можете получить ответ, если он передан как аргумент перехваченному методу.