typora-root-url: E:\Documents\typora-user-images
一、SpringBootApplication(启动类):
@SpringCloudApplication
确定该类为启动类。
相当于@SpringBootConfiguration + @EnableAutoConfiguration + @ComponentScan(“com.sunyard”)。
@MapperScan(value = "com.atguigu.springboot.mapper")
指定某个包为mapper包,相当于给每个接口自动加上@Mapper。
@EnableCaching
开启基于注解的缓存。
@ComponentScan("com.sunyard")
注解在启动类上,设置IOC容器要扫描的包。
@EnableDiscoveryClient
用于SpringCloud,标注在启动类上,让注册中心能够发现,扫描到该服务。
二、Controller(控制器类):
1、常用:
@RestController
@RestController注解相当于**@ResponseBody + @Controller**合在一起,@ResponseBody可以将控制器返回的对象、列表转为json串。
@SessionAttributes(names = {
"id"}, types = {
Role.class})
在控制器中可以使用注解@SessionAttributes来设置对应的键值对,不过这个注解只能对类进行标注,不能对方法或参数注解。它可以配置属性名称或者属性类型。它的作用是当这个类被注解后,Spring MVC执行完控制器的逻辑后,将数据模型中对应的属性名称或者属性类型保存到HTTP的Session对象中。
2、接收参数:
@Valid
使用 @Valid 标注,表明这个Bean将会被检验是否符合注解验证。
@RequestParam(value = "date", required = false, defaultValue="")
将请求参数绑定到你控制器的方法参数上(是springmvc中接收普通参数的注解)
语法:
value:参数名
required:是否包含该参数,默认为true,表示该请求路径中必须包含该参数,如果不包含就报错。
defaultValue:默认参数值,如果设置了该值,required=true将失效,自动为false,如果没有传该参数,就使用默认值
@RequestAttribute
注解@RequestAttribute被用于访问由过滤器或拦截器创建的、预先存在的请求属性。
@RequestAttribute和@RequestParam注解的区别:
@RequestAttribute注解的参数在项目里是自己解析出来的,并不是前端传递的。具体一点,在项目里的拦截器里会对Token信息进行解析,解析出来的参数重新放在请求里(用httpServletRequest.setAttribute(name, value)),后边接口接收参数时就用这个注解。
@RequestParam注解则表示这个参数是通过前端传递过来的,如果请求里没有这个参数,则会报错400 Bad Request。
@RequestPart
@RequestPart主要用来处理content-type为 multipart/form-data 或 multipart/mixed stream 发起的请求,可以获取请求中的参数,包括普通文本、文件或复杂对象比如json、xml等,针对json等复杂对象,需要明确对应的content-type:multipart/form-data。
multipart/form-data
是基于post方法来传递数据的,并且其请求内容格式为Content-Type: multipart/form-data,form-data格式一般是用来进行文件上传的。使用表单上传文件时,必须让表单的 enctype 等于 multipart/form-data
,因为该值默认值为application/x-www-form-urlencoded
。
关于multipart/form-data
具体可参考:https://www.cnblogs.com/xiaocaiyuxiaoniao/p/9430878.html
@SessionAttribute("userName")
将请求参数绑定到你控制器的方法参数上(用于获取Session中的数据)。
设置session参数使用@SessionAttributes注解。
@GetMapping("/car/{id}")
public void getCar(@PathVariable("id") Integer id){
}
@PathVariable(“id”)用于将请求参数绑定到你控制器的方法参数上(用于获取url中的数据)。
@MatrixVariable("low")
用于获取矩阵变量的值。
不同于常规的http://xxxx/video/BV1Et411Y7tQ?p=142&a=666,传递矩阵变量的格式为http://xxxx/video/BV1Et411Y7tQ;p=142;a=666,777,888,其中每一个分号代表一个属性,逗号则代表一个属性有多个值,需要使用列表来接收。
SpringBoot默认禁用了矩阵变量的功能,需要手动开启。
@RequestBody
将请求参数绑定到你控制器的方法参数上(用于将前端传过来的json转换为对应的对象或者数组),只能使用POST方式进行提交。
@RequestHeader(value="User-Agent", required=false, defaultValue="attribute")
从HTTP请求头获取对应的请求信息。
@CookieValue(value="JSESSIONID", required=true, defaultValue="MyJsessionId")
从Cookie请求头获取对应的请求信息。
三、Entity(实体类):
1、Lombok:
@Data
使用这个注解可以省去代码中get()、 set()、 toString()、@EqualsAndHashCode、@RequiredArgsConstructor等方法。
使用这个注解需要在IDEA中安装lombok插件,并且在pom.xml中添加lombok依赖:
<!--lombok-->
<dependency>
<groupId>org.projectlombok</groupId