我有:
@Controller
@RequestMapping(value="admin/*", method=RequestMethod.GET)
public class AdminController {
@Autowired
private HttpServletRequest request;
@Autowired
private HttpServletResponse response;
@RequestMapping
public ResponseEntity<String> test0() {
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
return null;
}
}
和标签:
<mvc:annotation-driven />
在我的config.xml中
我觉得应该足够了,但@Autowired有问题:
找不到类型为[javax.servlet.http.HttpServletResponse]的匹配bean依赖:预计至少有1个符合条件的bean ...
我已经看到了一些提及设置bean等的解决方案,但我确信必须有更好的方法。注释扫描应该解决这个问题。如果我必须在xml中为不同时间的几个不同注释设置bean,那就太糟糕了。我只想在我使用它们时注释工作!
谢谢!
答案 0 :(得分:3)
作为解决方法尝试:
@RequestMapping
public ResponseEntity<String> test0(
HttpServletRequest request,
HttpServletResponse response) {
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
return null;
}
还尝试添加RequestContextListener
,但在Spring MVC环境中不应该这样做。
答案 1 :(得分:3)
自动装配不适用于响应,仅适用于请求。有解决方法,但它们有点hacky和lame。我遇到了同样的问题,这是我的原始问题,其中包含解决方法的链接:@Autowired HttpServletResponse
答案 2 :(得分:1)
它不像你想要的那样工作,因为字段,因为请求和respose在每次请求后都会发生变化(缺乏更好的解释)。每次在字段中的新请求/响应时都无法重新注入。这就是为什么你必须在每次新的注入方法中添加它们的原因。