也许有一些解决方法,但这并不是很明显,因为这不是它的本意。Spring MVC旨在具有单例@Controller
bean,@RequestMapping
这些bean提供以请求和响应为参数的方法。
如果您需要在其他地方(服务层)进行响应-请勿这样做。响应不应超出网络(控制器)层。
要注入响应,您需要:-将响应存储在ThreadLocal
-中以使工厂bean返回当前响应
关于您显示的示例代码-我不确定您是否不需要工厂bean返回代理(实现HttpServletResponse
),而代理又返回当前响应。而且它变得相当复杂。
但最终-您不应该这样做。如果需要拦截多个控制器调用,请使用mvc- interceptor。如果确实需要使用方面,则可以将响应作为参数传递给截获的方法来获取响应。