【SpringBoot】带你一文彻底搞懂RestController和Controller的关系与区别
@RestController
和@Controller
是Spring Framework中用于构建Web应用程序的两个核心注解。
共同点:
- 两者都用于创建Spring框架的控制器。
- 控制器是Spring Web MVC的组件,它们接收来自客户端的请求并返回响应。
不同点:
@RestController
是@Controller
和@ResponseBody
的组合。@RestController
注解表示该类的方法返回的值直接作为HTTP响应发送给客户端,并且不会被解析为视图名。@Controller
通常与视图解析器(例如Thymeleaf)一起使用,用于创建HTML格式的响应。
使用@RestController
注解时,控制器的方法通常返回实体对象(如JSON、XML),而不是视图名。
例子:
// 使用@RestController注解
@RestController
public class MyRestController {
@GetMapping("/hello")
public String hello() {
return "Hello, World!";
}
}
// 使用@Controller注解
@Controller
public class MyController {
@GetMapping("/greeting")
public String greeting() {
return "greeting"; // 返回的是视图名,需要配合视图解析器使用
}
}
在第一个例子中,/hello
端点返回字符串"Hello, World!"。在第二个例子中,/greeting
端点返回视图"greeting",这可能对应于一个HTML文件。
评论已关闭