方法上没有@ResponseBody的@RestController工作不正确

我有以下控制器:

@RestController

@RequestMapping(value = "/base/url")

public class MyController {

@RequestMapping(

value = "/child/url",

method = RequestMethod.POST

)

@ResponseBody

public String mmm() {

return "Ok";

}

}

现在它可以正常工作(服务器响应Ok),但我认为这是@ResponseBody多余的,因为我们使用@RestController并删除了@ResponseBody批注

我看到以下服务器响应:

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>

<title>Error 404 Not Found</title>

</head>

<body>

<h2>HTTP ERROR 404</h2>

<p>Problem accessing /base/url/child/url/Ok. Reason:

<pre> Not Found</pre>

</p>

<hr />

<i>

<small>Powered by Jetty://</small>

</i>

<br/>

<br/>

<br/>

<br/>

<br/>

<br/>

<br/>

<br/>

<br/>

<br/>

<br/>

<br/>

<br/>

<br/>

<br/>

<br/>

<br/>

<br/>

<br/>

<br/>

</body>

</html>

你能解释这种行为吗?

回答:

spring版: 4.1.6.RELEASE

ps

我只发现了与mvc config相关的部分:

<context:annotation-config/>

<context:component-scan base-package="base.package"/>

回答:

为了能够使用@RestController,必须显式启用新的注释处理类。通过添加<mvc:annotation-driven

/>(对于XML)或@EnableWebMvc(对于Java Config)。

默认情况下,该DispatcherServlet寄存器的,现在已经过时,AnnotationMethodHandlerAdapter并且DefaultAnnotationHandlerMapping这可以被认为是前任或较新的东西。

以上是 方法上没有@ResponseBody的@RestController工作不正确 的全部内容, 来源链接: utcz.com/qa/398021.html

回到顶部