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