首页 > 其他分享 >Spring/Spring Boot 常用注解总结

Spring/Spring Boot 常用注解总结

时间:2024-01-15 10:25:05浏览次数:20  
标签:bean Spring Boot 校验 注释 枚举 注解

1、我们可以把 @SpringBootApplication看作是 @Configuration、@EnableAutoConfiguration、@ComponentScan 注解的集合   2、@RestController vs @Controller (qq.com)
@RestController注解是@Controller和@ResponseBody的合集,表示这是个控制器 bean,并且是将函数的返回值直接填入 HTTP 响应体中,是 REST 风格的控制器。
单独使用 @Controller 不加 @ResponseBody的话一般是用在要返回一个视图的情况,这种情况属于比较传统的 Spring MVC 的应用,对应于前后端不分离的情况。@Controller +@ResponseBody 返回 JSON 或 XML 形式数据
  3、@Scope("singleton")

四种常见的 Spring Bean 的作用域:

  • singleton : 唯一 bean 实例,Spring 中的 bean 默认都是单例的。
  • prototype : 每次请求都会创建一个新的 bean 实例。
  • request : 每一次 HTTP 请求都会产生一个新的 bean,该 bean 仅在当前 HTTP request 内有效。
  • session : 每一个 HTTP Session 会产生一个新的 bean,该 bean 仅在当前 HTTP session 内有效。
  4、PATCH 请求 一般实际项目中,我们都是 PUT 不够用了之后才用 PATCH 请求去更新数据。   5、@RequestBody 用于读取 Request 请求(可能是 POST,PUT,DELETE,GET 请求)的 body 部分并且Content-Type 为 application/json 格式的数据,接收到数据之后会自动将数据绑定到 Java 对象上去。系统会使用HttpMessageConverter或者自定义的HttpMessageConverter将请求的 body 中的 json 字符串转换为 java 对象。   6、@Value(常用) 使用 @Value("${property}") 读取比较简单的配置信息: @ConfigurationProperties(常用) 通过@ConfigurationProperties读取配置信息并与 bean 绑定。 @PropertySource(不常用) @PropertySource读取指定 properties 文件   springboot项目使用validation-api进行参数校验_jakarta.validation 怎么导入-CSDN博客
7、 参数校验 JSR(Java Specification Requests) 是一套 JavaBean 参数校验的标准,它定义了很多常用的校验注解,我们可以直接将这些注解加在我们 JavaBean 的属性上面,这样就可以在需要校验的时候进行校验了,非常方便! JSR只是一项标准,它规定了一些校验注解的规范,但没有实现,比如@Null、@NotNull、@Pattern等,它们位于 javax.validation.constraints这个包下。而hibernate validator是对这个规范的实现,并增加了一些其他校验注解,如 @NotBlank、@NotEmpty、@Length等,它们位于org.hibernate.validator.constraints这个包下

:更新版本的 spring-boot-starter-web 依赖中不再有 hibernate-validator 包(如2.3.11.RELEASE),需要自己引入 spring-boot-starter-validation 依赖。

需要注意的是: 所有的注解,推荐使用 JSR 注解,即javax.validation.constraints,而不是org.hibernate.validator.constraints 我们在需要验证的参数上加上了@Valid注解,如果验证失败,它将抛出MethodArgumentNotValidException(所以全局配置捕获时可以 捕获这个异常)
一些常用的字段验证的注解
  • @NotEmpty 被注释的字符串的不能为 null 也不能为空
  • @NotBlank 被注释的字符串非 null,并且必须包含一个非空白字符
  • @Null 被注释的元素必须为 null
  • @NotNull 被注释的元素必须不为 null
  • @AssertTrue 被注释的元素必须为 true
  • @AssertFalse 被注释的元素必须为 false
  • @Pattern(regex=,flag=)被注释的元素必须符合指定的正则表达式
  • @Email 被注释的元素必须是 Email 格式。
  • @Min(value)被注释的元素必须是一个数字,其值必须大于等于指定的最小值
  • @Max(value)被注释的元素必须是一个数字,其值必须小于等于指定的最大值
  • @DecimalMin(value)被注释的元素必须是一个数字,其值必须大于等于指定的最小值
  • @DecimalMax(value) 被注释的元素必须是一个数字,其值必须小于等于指定的最大值
  • @Size(max=, min=)被注释的元素的大小必须在指定的范围内
  • @Digits(integer, fraction)被注释的元素必须是一个数字,其值必须在可接受的范围内
  • @Past被注释的元素必须是一个过去的日期
  • @Future 被注释的元素必须是一个将来的日期
  8、在Controller中校验方法参数时,使用@Valid和@Validated并无特殊差异(若不需要分组校验的话):
@Valid:标准JSR-303规范的标记型注解,用来标记验证属性和方法返回值,进行级联和递归校验
@Validated:Spring的注解,是标准JSR-303的一个变种(补充),提供了一个分组功能,可以在入参验证时,根据不同的分组采用不同的验证机制 方法级别:
@Validated注解可以用于类级别,用于支持Spring进行方法级别的参数校验。@Valid可以用在属性级别约束,用来表示级联校验。
@Validated只能用在类、方法和参数上,而@Valid可用于方法、字段、构造器和参数上  

9、我们还可以验证任何Spring组件的输入,而不是验证控制器级别的输入,我们可以使用@Validated和@Valid注释的组合来实现这一需求。

一定一定不要忘记在类上加上 Validated 注解了,这个参数可以告诉 Spring 去校验方法参数。

 

SpringBoot 处理异常的几种常见姿势 (qq.com)

10、介绍一下我们 Spring 项目必备的全局处理 Controller 层异常。

相关注解:

  1. @ControllerAdvice :注解定义全局异常处理类 (还有个加强的注解是“@RestControllerAdvice”,该注解是一个组合注解,由@ControllerAdvice@ResponseBody组成)
  1. @ExceptionHandler :注解声明异常处理方法
  枚举的 7 种使用方法_枚举使用-CSDN博客 11、枚举

枚举跟普通类一样可以用自己的变量、方法和构造函数,构造函数只能使用 private 访问修饰符,所以外部无法调用。

枚举既可以包含具体方法,也可以包含抽象方法。 如果枚举类具有抽象方法,则枚举类的每个实例都必须实现它。

每一个枚举值就如同类的实例对象,可以在构造枚举的构造函数中定义每个枚举值有哪些值,如错误码和错误信息ErrorCodeEnum(int code, String msg),但其实

第一个枚举是逗号,最后一个是分号

可以用枚举实现单例模式:枚举只会在类加载时装载一次,所以它是线程安全的,这也是《Effective Java》作者极力推荐使用枚举来实现单例的主要原因。

枚举类最终会被编译为被 final 修饰的普通类,它的所有属性也都会被 static 和 final 关键字修饰,所以枚举类在项目启动时就会被 JVM 加载并初始化,而这个执行过程是线程安全的,所以枚举类也是线程安全的类。

 

标签:bean,Spring,Boot,校验,注释,枚举,注解
From: https://www.cnblogs.com/lengsong/p/17964810

相关文章

  • SpringBoot enter door基础_配springBoot项目,读取配置,配置全局异常捕获
    1、Spring是重量级企业开发框架 EnterpriseJavaBean(EJB) 的替代品,Spring为企业级Java开发提供了一种相对简单的方法,通过 依赖注入 和 面向切面编程 ,用简单的 Java对象(PlainOldJavaObject,POJO) 实现了EJB的功能虽然Spring的组件代码是轻量级的,但它的配置却是重......
  • 「Java开发指南」MyEclipse如何支持Spring Scaffolding?(一)
    MyEclipsev2023.1.2离线版下载MyEclipse技术交流群:742336981欢迎一起进群讨论1.使用Spring的Scaffolding应用程序支持Spring的MyEclipse目标之一是帮助开发人员从零开始编写更少的代码,并更广泛地使用代码生成,MyEclipse提供了丰富的代码生成选项集。MyEclipse可以为SpringMV......
  • SpringBoot集成Kafka构建消息系统
    一、前言在我们当前的互联网应用中,消息驱动已经成为一种不可或缺的模式,Kafka作为一款高性能的分布式消息系统,已经成为很多公司在消息驱动架构选择中很重要的工具。我们使用SpringBoot和Kafka快速构建消息驱动应用,应对高并发的消息处理业务。Kafka是分布式发布-订阅消息系统。主要特......
  • Spring Boot3 系列:Spring Boot3 跨域配置 Cors
    目录什么是CORS?SpringBoot如何配置CORS?前端代码注解配置全局配置过滤器配置注意事项什么是CORS?CORS,全称是“跨源资源共享”(Cross-OriginResourceSharing),是一种Web应用程序的安全机制,用于控制不同源的资源之间的交互。在Web应用程序中,CORS定义了一种机制,通过该机制,浏览器能......
  • spring与设计模式之四适配器模式
    一、定义适配器模式-或者称为转接口模式,变压器模式。通过适配,可以让原来提供特定功能的对象完成另外一个标准的功能。所以,所谓的适配应该可以这样称呼:让某些类/接口适配/转换某个标准/功能。适配器器的重点是适配,就是新增(装饰)。为了便于记忆和理解,读者最好根据自己的习惯来命......
  • 【SpringCloud】Spring Cloud Alibaba 及 Nacos开机启动
    前提:已经安装好nacos应用1、在/lib/systemd/system 目录底下,新建nacos.service文件可使用以下命令:vim/lib/systemd/system/nacos.service里面的配置信息,如下: [Unit]#描述,启动脚本,包括start,stopDescription=nacos#表示当前服务是在那个服务后面......
  • 基于SpringBoot+Vue的OA办公系统设计实现(源码+lw+部署文档+讲解等)
    (文章目录)前言:heartpulse:博主介绍:✌全网粉丝10W+,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌:heartpulse:......
  • Spring代理
    Spring代理概述在生活中,常见到的房产中介,会负责代理业务的房产进行售卖、招租,撮合买卖双方达成交易,减少买家和卖家的时间成本和交易成本,俗称代理模式(图)在软件开发中,也存在这样的机制,就是常说的设计模式中的代理模式Spring及相关的框架也广泛应用了代理技术Spring代理......
  • 详解Spring事件监听
    第1章:引言大家好,我是小黑。今天咱们来聊下Spring框架中的事件监听。在Java里,事件监听听起来好像很高大上,但其实它就像是我们日常生活中的快递通知:当有快递到了,你会收到一个通知。同样,在程序中,当某些事情发生时(比如用户点击了按钮),系统会发送一个事件,然后监听这个事件的处理器就会......
  • spring下载路径
     1.https://repo.spring.io/ui/2.artifactory--->artfacts--->plugins-release--->org----->springframework--->spring选择需要的版本下载即可3.spring项目至少需要5jarspring-aop.jar开发aop特性需要的jarspring-beans.jar   处理bean的jar......