Java 当@ResponseBody从控制器中删除时,将收到404 not found错误消息

Java 当@ResponseBody从控制器中删除时,将收到404 not found错误消息,java,spring,spring-boot,Java,Spring,Spring Boot,我有一个spring boot应用程序,其中我正在创建一个带有@controller注释的控制器,当我尝试使用url访问资源时,它显示给我404,“未找到”。但是,只要我在类级或方法级添加注释@ResponseBody,它就会提供所需的输出。我想了解@Responsebody在这里的作用,为什么它会影响url标识。据我所知,@ResponseBody处理响应 当我有如下代码时- @Controller @RequestMapping(value = "test") public class T

我有一个spring boot应用程序,其中我正在创建一个带有
@controller
注释的控制器,当我尝试使用url访问资源时,它显示给我
404,“未找到”
。但是,只要我在类级或方法级添加注释
@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

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

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

我希望得到一个字符串作为响应。

此链接可能会解释您需要什么:


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

此链接可能会解释您需要什么:


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

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

如果没有ResponseBy,spring将尝试解析与您的视图匹配的字符串“hello…”,但该字符串不存在

如果使用了ResponseBody,则返回将被序列化并写入HTTP响应
请参阅

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

如果没有ResponseBy,spring将尝试解析与您的视图匹配的字符串“hello…”,但该字符串不存在

如果使用了ResponseBody,则返回将被序列化并写入HTTP响应
不带
@ResponseBody
的reference

字符串
被解释为要呈现的网页的名称,并按原样使用。此错误似乎不明确,我认为响应中应该有不同的错误消息,以便开发人员理解。乍一看,似乎没有为此url指定映射。读了许多文章后,我明白了。在SpringBoot应用程序中,我仍然面临一些问题,以获取我将要修复的正确视图。但是我认为错误信息应该比当前的更慷慨。错误的地方在于,视图也是一个URL,因此404是完全可以接受的。找不到该视图,如果您检查日志(可能需要启用调试),您将看到这一点。是的,我刚刚设置为启用调试,现在非常清楚发生了什么。谢谢@M.deinumwhith
@ResponseBody
字符串
解释为要呈现的网页名称,并按原样使用。此错误似乎不明确,我认为响应中应该有不同的错误消息,以便开发人员理解。乍一看,似乎没有为此url指定映射。读了许多文章后,我明白了。在SpringBoot应用程序中,我仍然面临一些问题,以获取我将要修复的正确视图。但是我认为错误信息应该比当前的更慷慨。错误的地方在于,视图也是一个URL,因此404是完全可以接受的。找不到该视图,如果您检查日志(可能需要启用调试),您将看到这一点。是的,我刚刚设置为启用调试,现在非常清楚发生了什么。感谢@M.DeinumThanks提供的Claudiu链接,但它只指定@Responsebody提供响应的JSON表示,但404表示,找不到请求的URL。问题仍然是,我们正在更改响应的类型,它应该如何影响URL标识。感谢链接Claudiu,但它只指定@ResponseBy提供响应的JSON表示,但404表示,找不到请求的URL。问题仍然是,我们正在更改响应的类型,它应该如何影响URL标识。