1 问题
还遇到过Circular view path [test]: would dispatch back to the current handler URL
经过查找,发现修改方式为把@Controller 改为@RestController
2 介绍
下面介绍一下这两个注解:
@RestController 和 @Controller 是 Spring Framework 中用于处理 HTTP 请求的两个注解,它们在功能上有一些区别,主要体现在返回结果的处理方式上。
2.1 返回结果处理方式
@Controller:其方法返回的结果通常是一个视图名称,Spring MVC 会根据视图名称解析并渲染相应的视图页面
@RestController:主要用于构建 RESTful API,其方法返回的结果直接作为 HTTP Response 的内容。这意味着方法的返回值会被直接转换为 JSON 或 XML 格式,而不是被解析为视图。
2.2 默认视图解析规则:
@Controller:通过 @Controller 处理的请求,Spring MVC 会根据配置的视图解析器(ViewResolver)来解析并渲染相应的视图。
@RestController:返回的结果直接作为响应内容,不经过视图解析器,通常用于返回 JSON 或 XML 格式的数据。
2.3 适用场景:
@Controller:适用于传统的Web应用,其中页面的渲染通过模板引擎实现,返回的结果是视图名称。
@RestController:适用于构建 RESTful API,其中返回的结果是数据,通常以 JSON 或 XML 格式返回给客户端。