博主不喜欢说废话,直接开场吧
1、@SpringBootApplication
一般不会主动去使用它,但是要知道它是一个组合注解,@Configuration 、@EnableAutoConfiguration 、@ComponentScan 注解的集合
2、@Configuration
用@Configuration注释类表明是一个配置类,允许在 Spring 上下文中注册额外的 bean 或导入其他配置类。
3、@EnableAutoConfiguration
该注解就是用来开启自动配置的,自动配置原理可以去看一下博主springboot系列记录中的文章
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
是一个用来处理请求地址映射的注解,可用于类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。
该注解中的属性释义:
- 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就是用于获取路径参数
@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
这一类注解建议看 Springboot系列记录(二)——Springboot配置文件的读取
14、@DateTimeFormat、@JsonFormat
实体类User有个Date类型的属性birthday,然后用该实体类接收从前端传来的参数,我们会发现报了400异常。
因为前端传去的是字符串类型,而实体类中是Date类型,那么此时就可以使用@DateTimeFormat
已经可以了,但是这种格式不是我们想要的,那么@JsonFormat登场了,timezone:是时间设置为东八区,避免时间在转换中有误差
可见:@DateTimeFormat是前台到后台的时间转换,而@JsonFormat是后台到前台的转换
15、@Import
@Import只能用在类上 ,@Import通过快速导入的方式实现把实例加入spring的IOC容器中
用法:
@Import({ 类名.class , 类名.class... })