Kev*_*vin 13 java spring spring-mvc autowired
我正在寻找一种自动装配的方法HttpServletResponse
.它不适用于开箱即用的弹簧,但我发现了这种描述.这有点令人讨厌,因为那个春天显然有一个机制来让对象请求作用域(即HttpServletRequest
),这似乎是一个劈开顶部的黑客.
有没有办法挂钩弹簧用于的相同机制HttpServletRequest
?而且,任何想法为什么春季团队决定只能使HttpServletRequest
autowire能够(并被排除在外HttpServletResponse
)?
也许有一些解决方法,但它并不那么明显,因为它不是它的意思.Spring MVC旨在使单例@Controller
bean提供@RequestMapping
将请求和响应作为参数的方法.
如果您需要在其他地方(服务层)进行响应 - 请不要这样做.响应不应超出Web(控制器)层.
要注入响应,您需要: - 将响应存储在ThreadLocal
- 中,以生成返回当前响应的工厂bean
关于您显示的示例代码 -我不确定您是否不需要工厂bean来返回代理(实现HttpServletResponse
),而代理又返回当前响应.它变得相当复杂.
但最终 - 你不应该这样做.如果需要拦截多个控制器调用,请使用mvc-interceptor.如果您确实需要使用方面,则可以获得响应,如果它作为参数传递给截获的方法.
您可以简单地将请求包含在方法句柄中吗?
@RequestMapping(method=Method.GET, value="myUrl")
public String doGet(HttpServletResponse response){//spring will put the response in for you
...
}
Run Code Online (Sandbox Code Playgroud)