@RestController
和 @Controller
是 Spring Framework 中用于定义控制器的注解,它们之间的主要区别在于它们的默认行为和使用场景。
-
@Controller
:@Controller
用于定义控制器类,通常配合@RequestMapping
注解一起使用,用于处理 HTTP 请求和构建视图。- 控制器方法可以返回一个视图名,Spring MVC 会根据视图名解析并返回相应的视图页面。
- 默认情况下,控制器方法使用
@ResponseBody
来将方法的返回值直接写入 HTTP 响应体中。
@Controller public class MyController { @RequestMapping("/hello") public String hello() { return "hello"; // 返回视图名 } }
-
@RestController
:@RestController
是@Controller
的特化版本,用于标记 RESTful 风格的控制器。- 默认情况下,
@RestController
的每个方法都使用@ResponseBody
,表示该方法的返回值直接作为 HTTP 响应的内容,而不是视图。 - 常用于构建 RESTful API,通常返回 JSON 或 XML 格式的数据。
@RestController public class MyRestController { @RequestMapping("/api/hello") public String hello() { return "Hello, REST!"; } }
总的来说,@Controller
用于传统的 Web 应用程序,返回的是视图页面;而 @RestController
用于构建 RESTful 风格的服务,返回的是数据(JSON 或 XML)。在使用时,根据应用的需求选择合适的注解。如果需要返回视图页面,使用 @Controller
;如果需要返回数据,使用 @RestController
。
Was this helpful?
0 / 0