1、@SpringBootApplication

一般不会主动去使用它,但是要知道它是一个组合注解,@Configuration 、@EnableAutoConfiguration 、@ComponentScan 注解的集合。

2、@Configuration

用@Configuration注释类表明是一个配置类,允许在 Spring 上下文中注册额外的 bean 或导入其他配置类。

3、@EnableAutoConfiguration

该注解就是用来开启自动配置的,自动配置原理 —> 【跳转】

4、@ComponentScan

@ComponentScan用于类或接口上主要是指定扫描路径,spring会把指定路径下带有指定注解的类自动装配到bean容器里。会被自动装配的注解包括@Controller、 @Service、@Component、@Repository等等。其作用等同于<context:component-scan base-package=”com.xxx.xxx” />配置。

5、@Autowired、@Qualifier

@Autowired它可以对类成员变量、方法及构造函数进行标注,让 spring 完成 bean 自动装配的工作,默认是按照类去匹配,当有多个同一类型的Bean时,可以用@Qualifier(“name”)来指定。与@Autowired配合使用。

6、@Component、@Respository、@Service、@Controller

@Component :通用的注解,可标注任意类为 Spring组件。如果一个 Bean 不知道属于哪个层,可以使用@Component 注解标注。
@Repository : 对应持久层即 Dao 层,主要用于数据库相关操作。
@Service : 对应服务层,主要涉及一些复杂的逻辑,需要用到 Dao 层。
@Controller : 对应 Spring MVC 控制层,主要用户接受用户请求并调用 Service 层返回数据给前端页面。

7、@RequestMapping

@RequestMapping是一个用来处理请求地址映射的注解,可用于类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。

该注解中的属性释义:

value: 指定请求的实际地址
method: 指定请求的method类型, GET、POST、PUT、DELETE等;
consumes: 指定处理请求的提交内容类型(Content-Type),例如application/json, text/html;
produces: 指定返回的内容类型,仅当request请求头中的(Accept)类型中包含该指定类型才返回;
params: 指定request中必须包含某些参数值是,才让该方法处理。
headers: 指定request中必须包含某些指定的header值,才能让该方法处理请求。

8、@ResponseBody

@ResponseBody注解既可以在方法上使用,也可以在类上使用,在类上使用表明该类中所有方法均返回JSON数据,也可以与@Controller注解合并为@RestController。它的作用是将controller的方法返回的对象通过适当的转换器转换为指定的格式之后,写入到response对象的body区,通常用来返回JSON数据或者是XML数据。
注意:在使用此注解之后不会再走视图处理器,而是直接将数据写入到输入流中,他的效果等同于通过response对象输出指定格式的数据。

9、@GetMapping、@PutMapping、@PostMapping、@DeleteMapping

也就是对应HTTP的请求方式,

GET :请求从服务器获取特定资源。举个例子:GET /users(获取所有学生)
POST :在服务器上创建一个新的资源。举个例子:POST /users(创建学生)
PUT :更新服务器上的资源(客户端提供更新后的整个资源)。举个例子:PUT /users/12(更新编号为 12 的学生)
DELETE :从服务器删除特定的资源。举个例子:DELETE /users/12(删除编号为 12 的学生)

以@DeleteMapping为例子来看一下

@DeleteMapping(“/users/{userId}”)等价于@RequestMapping(value=”/users/{userId}”,method=RequestMethod.DELETE)

10、@PathVariable

@PathVariable就是用于获取路径参数

1
2
3
4
@RequestMapping("/getUserById/{name}")
public User getUser(@PathVariable("name") String name){
return userService.getUser(name);
}

11、@RequestParam

用于获取查询参数,

语法:@RequestParam(value=”参数名”,required=”true/false”,defaultValue=””)

value:参数名
required:是否包含该参数,默认为true,表示该请求路径中必须包含该参数,如果不包含就报错。
defaultValue:默认参数值,如果设置了该值,required=true将失效,自动为false,如果没有传该参数,就使用默认值

12、@RequestBody

不要和@ResponseBody混淆了,@RequestBody主要用来接收前端传递给后端的json字符串中的数据的(请求体中的数据的),Content-Type 为 application/json 格式;GET方式无请求体,所以使用@RequestBody接收数据时,前端不能使用GET方式提交数据,而是用POST方式进行提交。比如前端以post方式传json字符串,此时后端就可以使用@RequestBody来接收。

13、@Value、@ConfigurationProperties

详细请看 —> 【Spring Boot 配置文件】

14、@DateTimeFormat、@JsonFormat

实体类User有个Date类型的属性birthday,然后用该实体类接收从前端传来的参数,我们会发现报了400异常。

Image_01Image_02Image_03

因为前端传去的是字符串类型,而实体类中是Date类型,那么此时就可以使用@DateTimeFormat,

Image_04Image_05

已经可以了,但是这种格式不是我们想要的,那么@JsonFormat登场了,timezone:是时间设置为东八区,避免时间在转换中有误差,

Image_06Image_07

可见:@DateTimeFormat是前台到后台的时间转换,而@JsonFormat是后台到前台的转换。

15、@Import

@Import只能用在类上 ,@Import通过快速导入的方式实现把实例加入spring的IOC容器中,

用法:

1
@Import({ 类名.class , 类名.class... })