Spring Boot
零、环境配置
1. 创建项目
2. 热部署
添加依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
配置application.properties
文件:
# 热部署生效
spring.devtools.restart.enabled=true
# 设置重启目录
spring.devtools.restart.additional-paths=src/main/java
# 设置classpath目录下的 WEB-INF 文件夹内容修改为不重启
spring.devtools.restart.exclude=static/**
打开设置,快捷方式CTRL + ALT + S
,进行如下设置:
一、控制器
在Spring Boot中,控制器(Controller)是处理HTTP请求和返回响应的组件。控制器是Spring MVC框架的一部分,用于实现模型-视图-控制器(MVC)设计模式中的控制器层。
SpringBoot提供了两种注解来表示此类负责接受和处理 HTTP 请求:@Controller
和@RestController
,如果请求的是页面和数据,使用@Controller
;如果只是请求数据,则可以使用@RestController
。
默认情况下,@RestController注解会将返回的对象数据转换为JSON格式。
@RestController的使用方法
@RestController // 注解,表示该类是一个RestController控制器
public class HelloController{
@RequestMapping("/user") // 映射路由
public User getUser(){
User user = new User();
user.setUsername("zhangsan");
user.setPassword("123");
return user;
}
}
// 运行代码后,在浏览器中输入"localhost:8080/user"即可查看返回结果。
通常情况下,所写的控制器放在
controller
文件夹下。
二、路由
注解 @RequsetMapping
主要负责 URL 的路由映射,可以添加在Controller 类或者具体的方法上。如果添加 Controller 类上,则这个 Controller 中的所有路由映射都会加上此映射规则,如果添加在某个方法上,则只会对当前方法生效。
常用属性参数:
- value 或 path:
- 用途:定义请求的URL路径。
- 说明:
value
是@RequestMapping
的属性,可以指定一个或多个URL路径。path
是@RequestMapping
的别名,与value
功能相同,但只能指定一个路径。
- method:
- 用途:限制请求的HTTP方法(如GET、POST、PUT、DELETE等)。
- 说明:可以指定一个或多个HTTP方法,只有匹配这些方法的请求才会被映射到相应的处理方法。
- params:
- 用途:根据请求参数的存在与否来决定是否映射请求。
- 说明:可以指定一个或多个参数条件,只有当这些参数在请求中出现时,请求才会被映射。
- headers:
- 用途:根据请求头的存在与否来决定是否映射请求。
- 说明:可以指定一个或多个请求头条件,只有当这些请求头在请求中出现时,请求才会被映射。
- consumes:
- 用途:指定可接受的请求体的媒体类型(如
application/json
、text/plain
等)。 - 说明:只有当请求的
Content-Type
与指定的媒体类型匹配时,请求才会被映射。
- 用途:指定可接受的请求体的媒体类型(如
- produces:
- 用途:指定控制器方法可以产生的媒体类型。
- 说明:这通常用于设置响应的
Content-Type
,告诉客户端期望接收的媒体类型。
- name:
- 用途:为映射定义一个名称,方便在其他注解中引用。
- 说明:在大型应用中,使用名称可以简化映射的引用,提高代码的可维护性。
参数传递:
@RequestParam
:用于将HTTP请求的查询字符串参数或请求体参数绑定到控制器方法的参数上。如果参数名称一致,可以省略。@PathVariable
:用于提取URL中的动态路径变量,并将这些变量传递给控制器方法的参数。@RequestBody
:用于接收请求体中的参数,通常用于处理JSON、XML等非表单编码的数据。
实例:
import org.springframework.web.bind.annotation.*;
import xxx.start.entity.User;
@RestController
public class ParamsController {
@RequestMapping(value = "/getTest1", met