0
这使我发疯。我有一个简单的Spring应用程序配置有这样的只是一个servlet上下文文件:被调用两次的弹簧控制器
<context:component-scan base-package="au.com.mypackage.service" />
<context:annotation-config />
<mvc:annotation-driven />
和一个简单的控制器:
@Controller
public class MyController {
@RequestMapping(value = "/data/{id}", method=RequestMethod.GET)
@ResponseBody public Bean getData(@PathVariable String id) {
Bean bean = new Bean();
bean.setSomething("hello");
bean.setSomethingElse(5);
return bean;
}
它利用信息转换器做的工作。然后我从SoapUI提交这个请求:
GET http://localhost:8080/spring/data/123 HTTP/1.1
Accept-Encoding: gzip,deflate
Accept: application/json
User-Agent: Jakarta Commons-HttpClient/3.1
Host: localhost:8080
它看起来工作正常。但是,当我查看tomcat日志时,我发现控制器被调用两次。这对于JSON是可以的。但是当我切换到请求XML时,它变得非常糟糕。第二个请求(不应该发生)因触发套接字等原因在XStream中触发大量错误。
问题的根源在于控制器调用了两次。有谁知道为什么会发生这种情况?
这通常是一个beans \ controllers被Spring实例化/注册两次的情况。你如何设置你的应用程序配置?只是通过XML或者你也使用注释? –
只需通过注释。 – drekka