Spring Boot的MVC支持主要来最常用的几个注解,包括
- @RestController用于声明控制器
- @RequestMapping 用于实现方法映射地址
- @PathVariable 用于接受路径中的参数
- @RequestParam 用于接受 request 请求中的 参数
- @RequestBody 用于接受 application/json 类型的请求信息
主要掌握几个注解常用的使用方式和特点。
1、 @RestController
@RestController 是 Spring Boot 新增的一个注解,等价于@Controller+@ResponseBody
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Controller
@ResponseBody
public @interface RestController {
String value() default "";
}
那么从上述代码中我们可以看出@RestController注解包含了原来的@Controller 和@ResponseBody注解,@ResponseBody 注解是将返回的数据结构转换为 Json 格式。
所以@RestController可以看作是@Controller和@ResponseBody的结合体,为了编码方便建议使用@RestController 后就不用再使用@Controller 了。
@Controller 则返回的是逻辑地址名。
但此时我们需要注意的是:若前后端分离,且不用模板渲染的话,如 Thymeleaf,这种情况下是可以直接使用 @RestController 将数据以 json 格式传给前端,前端拿到之后解析;但若不是前后端分离,且使用模板渲染的话,一般 Controller 中都会返回到具体的页面,那么此时就不能使用@RestController,但其实是需要返回user.html页面的。
public String getUser(){
return "user";
}
若使用@RestController的话,会将user作为字符串返回的。
若使用@Controller注解,则表示返回一个回一个逻辑地址名 user 字符串,需要依赖于 ViewResovler 组件将逻辑地址名称转 换为物理地址。
在Spring Boot集成Thymeleaf模板引擎中会使用。
spring.mvc.view.prefix=/
spring.mvc.view.suffix=.html
如果使用@Controller,方法的返回值是字符串 user,则前后缀自动生效,将逻辑地址名
user 转换为物理地址名/user.html,静态页面默认存储位置可以考虑使用。
resources/static 目录