0

我的一个弹簧控制器有一些非常奇怪的行为,我无法解释。

所以这就是我所拥有的。非常简单的控制器。

@RequestMapping(value="/doSomething")
public void doSomething(@RequestParam int value, HttpSession session) {

    System.out.println("Lorem");

    // Some stuff later on done here

    System.out.println("ipsum");

}

当我请求映射的 URL 时,控制器的行为就像它内部有一个无限循环一样。所以它从输出“Lorem”开始,然后是“ipsum”,而不是离开方法,它再次从方法的开头开始。它不会从外部多次调用。有人知道这种行为或有任何线索吗?此外,我可以观察到输出速度减慢,因为内存急剧增加到大约 1.5 GB,并且 100% 的 CPU 使用率分布在每个核心上。感谢您的帮助。

4

2 回答 2

1

您的处理程序方法对我来说似乎不正确。通常,您需要返回一个字符串,该字符串将由 ViewResolver 解析为视图,例如:

@RequestMapping(value="/doSomething")
public String doSomething(@RequestParam int value, HttpSession session) {
   // ....
  return "somethingdone";
}
于 2013-07-12T04:41:08.957 回答
0

这是我的理解。

如果控制器声明了 void return type ,Spring 将尝试从请求 URL 推断视图名称。

在您的情况下,它将假定视图名称为“doSomething”,并继续该假设。

它使用 RequestToViewNameTranslator 的实现来做到这一点,RequestToViewNameTranslator 的默认实现是 DefaultRequestToViewNameTranslator

看到这个

于 2013-07-12T21:28:07.987 回答