从控制器中删除@ResponseBody时,出现404 not found错误消息

时间:2019-06-13 06:54:47

标签: java spring spring-boot

我有一个spring boot应用程序,其中正在创建带有@Controller注释的控制器,当我尝试使用url访问资源时,它向我显示404, "not found"。但是,只要在类级别或方法级别添加注释@ResponseBody,它就会为我提供所需的输出。我想在这里了解@Responsebody的作用,为什么它影响URL标识。据我了解,@ResponseBody处理这些响应。

当我有如下代码时-

@Controller
@RequestMapping(value = "test")

public class TestController {

    @RequestMapping(value = "/m1")
    public @ResponseBody String testMethod(){
        return "Hello First Application";
    }
}

它给我的确切输出为Hello First Application

当我从方法@ResponseBody中删除testMethod()时,会得到以下输出。

{
    "timestamp": "2019-06-13T06:36:14.510+0000",
    "status": 404,
    "error": "Not Found",
    "message": "No message available",
    "path": "/test/m1"
}

我期望一个字符串作为响应。

2 个答案:

答案 0 :(得分:0)

此链接可能会解释您的需求: multer

基本上,注释告诉控制器对象格式正确。 @Controller通常用于返回视图,@RestController用于JSON,并且不再需要@ResponseBody

答案 1 :(得分:0)

这取决于您的视图分辨率。只需验证您为项目指定的默认视图分辨率即可。

没有ResponseBody,spring尝试解析不存在的视图匹配字符串“ hello ...”。

如果使用ResponseBody,则将返回值序列化并写入HTTP响应 请参阅https://www.baeldung.com/spring-request-response-body