SpringMVC的Controller层没有加@ResponseBody注解报错说明

请求代码示例:

1
2
3
4
5
6
7
8
@Controller
public class FirstController {

@GetMapping(path = "/helloWorld")
public String helloWorld() {
return "hello world";
}
}

后端返回404报错:

1
2
3
4
5
6
7
{
"timestamp": "2023-03-10 16:37:27",
"status": 404,
"error": "Not Found",
"message": "No message available",
"path": "/helloWorld"
}

原因分析

原因在于不加@ResponseBody注解springmvc框架会认为方法返回的是一个 ModelAndViewer对象,即视图对象,那么它就会去找这么一个对象,找不到则报404错。

解决方案

  • 类上面使用@RestController注解,包括了 @Controller 和@ResponseBody 两个注解。

  • 类上面使用 @Controller ,方法上加上@ResponseBody注解(附:@ResponseBody注解的作用:将java对象转为json格式的数据,如果不加,则SpringMVC会以为是页面)

文章作者: GeYu
文章链接: https://nuistgy.github.io/2023/03/10/关于缺失@ResponseBody注解报错的解释/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Yu's Blog