Spring MVC @AutoWired响应不起作用

时间:2012-03-15 12:29:32

标签: java spring java-ee spring-mvc spring-annotations

我有:

@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,那就太糟糕了。我只想在我使用它们时注释工作!

我见过: Spring MVC - Response

谢谢!

3 个答案:

答案 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在每次请求后都会发生变化(缺乏更好的解释)。每次在字段中的新请求/响应时都无法重新注入。这就是为什么你必须在每次新的注入方法中添加它们的原因。