1、Spring MVC简介
Spring Boot由于内嵌Tomcat、Jetty 或者 Undertow,因此非常适合开发web应用程序。大多数web应用程序可以使用spring-boot-starter-web
模块来快速搭建和运行,也可以选择使用spring-boot-starter-webflux
模块来构建响应式(reactive) web 应用程序。Spring MVC让我们创建一个注解有@Controller或@RestController的bean来处理http请求,controller中的方法通过@RequestMapping注解映射到http。
2、整合MVC
1、POM文件
将spring-boot-starter依赖改为spring-boot-starter-web
<!-- <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
2、YAML文件
server:
port: 8082 #端口 默认8080
servlet:
context-path: /shinb #路径 默认/
3、代码
@RestController
@RequestMapping("/person")
public class MvcController {
@Autowired
private Person person;
@GetMapping("/info")
public Person getPerson(@RequestParam String name){
person.setName(name);
return person;
}
}
person类见上期
4、测试
curl http://localhost:8082/shinb/person/info?name=shiningbo
{
"name":"shiningbo",
"age":20,
"married":true,
"birth":"2021-10-09T16:00:00.000+00:00",
"maps":{
"k1":"v1",
"k2":12
},
"lists":[
"lisi",
"zhaoliu"
],
"dog":{
"name":"灏忕嫍",
"age":8
}
}
3、MVC注解
1、@RestController
这段代码使用了Spring@RestController注释,它将类标记为一个控制器,其中每个方法返回一个域对象而不是视图。它是同时包含@Controller和@ResponseBody的简写。
@RestController是一个组合注释,它本身带有@Controller和@ResponseBody的元注释,用来指示一个控制器,该控制器的每个方法都继承了类型级的@ResponseBody注释,因此可以直接写入响应正文,而不是使用HTML模板进行视图解析和渲染。--官网解释
即:如果有注解@ResponseBody则将方法返回值通过HttpMessageConverters转换成特定格式写入response的body;如果没有则将方法返回值通过视图解析器封装为ModelAndView对象
2、 @GetMapping
这段代码使用的@GetMapping注解确保对/info的HTTP GET请求被映射到getPerson()方法。
其他HTTP动作也有相应的注解(例如POST的@PostMapping);
还有一个@RequestMapping注释,它们都是从这个注释派生出来的,并且可以作为同义词(例如@RequestMapping(method=GET))。