当前位置:   article > 正文

一文掌握 Spring Boot 常用注解,保姆级整理,建议收藏!_springboot常用注解

springboot常用注解

亲兄弟篇:   SpringBoot注解大全(超详细)_Maiko Star的博客-CSDN博客

一、SpringBoot常用注解

二、Bean处理注解

2.1 @Resource

依赖注入,自动导入标注的对象到当前类中,比如我们的 Controller 类通常要导入 Service 类(需要注意这里 Service 类要被 Spring 容器管理)。

2.2 @Component、@Repository、@Service、@Controller、@RestController

我们一般使用 @Resource 注解让 Spring 容器帮我们自动装配 bean。要想把类标识成可用于 @Resource 注解自动装配的 bean 就需要我们使用这几个注解了,它们表示对应的类将被 Spring 容器管理。

  • @Component :通用的注解,可标注任意类为 Spring 组件。如果一个 Bean 不知道属于哪个层,可以使用@Component 注解标注;

  • @Repository : 对应持久层即 Dao 层,主要用于数据库相关操作;

  • @Service : 对应服务层,主要涉及一些复杂的逻辑,需要用到 Dao 层;

  • @Controller : 对应 Spring MVC 控制层,一般需要注入 Service 类返回结果数据;

  • @RestController : 继承于 @Controller,区别在于标注后整个类所有方法将直接返回 JSON 数据,不再需要视图解析处理,目前前后端分离的项目后端都是直接用这个注解的;

2.3  @Configuration

标注是 Java 代码的配置类, Spring Boot 中推荐这种做法不再使用 xml 配置了;

2.4   @Scope

声明 Spring Bean 的作用域,作用于一共有以下几种:

  • singleton:唯一 bean 实例,Spring 中的 bean 默认都是单例的。

  • prototype:每次请求都会创建一个新的 bean 实例。

  • request:每一次 HTTP 请求都会产生一个新的 bean,该 bean 仅在当前 HTTP request 内有效。

  • session:每一次 HTTP 请求都会产生一个新的 bean,该 bean 仅在当前 HTTP session 内有效。

三、HTTP请求注解

3.1  @GetMapping

等价于 @RequestMapping(value="/test",method=RequestMethod.GET)

3.2  @PostMapping

 3.3  @PutMapping

put 方式的请求,常用语更新服务器上的资源。举个例子:PUT /users/7(更新编号为 7 的学生)

3.4  @DeleteMapping

DELETE 请求,从服务器删除特定的资源。

四、前后端参数传递注解

4.1  @RequestParam & @PathVariable

@RequestParam 用在方法的参数前面,获取请求中表单类型的key=value格式的数据。

@PathVariable 用于获取请求路径中的参数。

4.2  @RequestBody

获取请求 body 中的数据,常用于搭配 @PostMapping 请求来提交对象数据.  请求体 的Content-Type 必须为 application/json 格式的数据,接收到数据之后会自动将数据绑定到 Java 对象上去。

系统会使用 HttpMessageConverter 或者自定义的 HttpMessageConverter将请求的 body 中的 json 字符串转换为 java 对象。

强调一下:请求方法只可以有一个@RequestBody,但是可以有多个 @RequestParam 和 @PathVariable。 如果你的方法必须要用两个 @RequestBody 来接受数据的话,那你就只思考下你的设计了,或者套娃形式的。

4.3  @ResponseBody

表示该方法的返回结果直接写入 HTTP response body 中,格式为 json。上面我们提到的 @RestController 其实就是 @Controller 和 @ResponseBody 两个结合起来的。

五、读取配置注解

5.1  @value

可以在任意 Spring 管理的 Bean 中通过这个注解获取任何来源配置的属性值。比如我们的 application.properties 或者 application.yml 配置文件中配置的属性值,当然也可以是 JVM 属性配置或者系统环境变量配置的值,如果对 Spring Boot 应用程序都有哪些属性配置源以及它们之间的优先级不了解的小伙伴可以看我之前的文章:Spring Boot 属性配置你所不知道的细节

5.2  @ConfigurationProperties(重点)

上面 @Value 在每个类中获取属性配置值的做法其实是不推荐的,我们一般在企业项目开发中,不会使用那么杂乱无章的写法而且维护也麻烦,通过就是一次性读取到一个 Java 配置类,然后需要使用的地方直接引用这个类就可以多次访问了,方便维护。

5.3  @PropertySource

这个注解是用来指定读取我们自定义的配置文件的。

六、参数校验注解

数据的校验的重要性就不用说了,即使在前端对数据进行校验的情况下,我们还是要对传入后端的数据再进行一遍校验,避免用户绕过浏览器直接通过一些 HTTP 工具直接向后端请求一些违法数据。

JSR(Java Specification Requests) 是一套 JavaBean 参数校验的标准,它定义了很多常用的校验注解,我们可以直接将这些注解加在我们 JavaBean 的属性上面,这样就可以在需要校验的时候进行校验了,非常方便!

校验的时候我们实际用的是 Hibernate Validator 框架。Hibernate Validator 是 Hibernate 团队最初的数据校验框架,Hibernate Validator 4.x 是 Bean Validation 1.0(JSR 303)的参考实现,Hibernate Validator 5.x 是 Bean Validation 1.1(JSR 349)的参考实现,目前最新版的 Hibernate Validator 6.x 是 Bean Validation 2.0(JSR 380)的参考实现。

需要注意的是从 Spring Boot 2.3开始,我们还需要显式地添加 spring-boot-starter-validation 依赖项,在此之前的 Spring Boot 版本是在 spring-boot-starter-web 依赖项中包含的不需要额外引入。

我现在使用的是 Spring Boot 2.5.2 版本了,所以手动增加依赖:

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/194633
推荐阅读
相关标签