Spring Boot 的 MVC 支持主要来介绍实际项目中最常用的几个注解,包括 @RestController
、 @RequestMapping
、@PathVariable
、@RequestParam
以及 @RequestBody
。主要介绍这几个注解常用的使用方式和特点。
1. @RestController
@RestController
是 Spring Boot 新增的一个注解,我们看一下该注解都包含了哪些东西。
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Controller
@ResponseBody
public @interface RestController {
String value() default "";
}
可以看出, @RestController
注解包含了原来的 @Controller
和 @ResponseBody
注解,使用过 Spring 的朋友对 @Controller
注解已经非常了解了,这里不再赘述, @ResponseBody
注解是将返回的数据结构转换为 Json 格式。所以 @RestController
可以看作是 @Controller
和 @ResponseBody
的结合体,相当于偷个懒,我们使用 @RestController
之后就不用再使用 @Controller
了。但是需要注意一个问题:如果是前后端分离,不用模板渲染的话,比如 Thymeleaf,这种情况下是可以直接使用@RestController
将数据以 json 格式传给前端,前端拿到之后解析;但如果不是前后端分离,需要使用模板来渲染的话,一般 Controller 中都会返回到具体的页面,那么此时就不能使用@RestController
了,比如:
public String getUser() {
return "user";
}
其实是需要返回到 user.html 页面的,如果使用 @RestController
的话,会将 user 作为字符串返回的,所以这时候我们需要使用 @Controller
注解。这在下一节 Spring Boot 集成 Thymeleaf 模板引擎中会再说明。