使用 Spring @RestController 而不隐式 @RequestBody

Use Spring @RestController without implicit @RequestBody

我的控制器看起来像这样:

import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.GetMapping;

@RestController
public class MainController
{
    @GetMapping("/test")
    public String test()
    {
        return "test";
    }
}

"test"-String I return 是应该处理的 Thymeleaf 模板的文件名。相反,当我访问该页面时,只会显示 "test" 。我读过 @RestController 隐含地对其所有映射执行 @ResponseBody。但是我怎样才能防止呢?或者我应该简单地使用 @Controller?

你是对的 @RestController 将始终在方法上产生 ResponseBody。您将需要使用标准的 @Controller 到 return 模板或视图。
@RestController 专门设计用于 RESTful 网络应用程序,@Controller 用于 MVC 网络应用程序。

@RestController

这个注释是用来处理网络服务的,它都是关于数据的,HTML 等表示标记在这里没有任何作用。

@控制器

如果涉及到 view,这个注释就是您想要使用的。 view 可以是任何会吐出 html 的东西(有或没有内插 model)。您可以使用好的 ol' JSP、JSF 或 freemarker、thymeleaf、velocity 等模板引擎作为 view.