【沉浸式解决问题】Cannot resolve symbol ‘NotNull‘

一、问题描述

查看mybatis-plus代码生成器源码时发现@NotNull注解爆红,但是参数等地方经常用,按理说应该有依赖,拉到最上面查看类发现是jetbrains的

Cannot resolve symbol ‘NotNull’

在这里插入图片描述
在这里插入图片描述


二、解决方案

直接引入对应依赖就好

<!-- https://mvnrepository.com/artifact/org.realityforge.org.jetbrains.annotations/org.jetbrains.annotations -->
<dependency>
    <groupId>org.realityforge.org.jetbrains.annotations</groupId>
    <artifactId>org.jetbrains.annotations</artifactId>
    <version>1.7.0</version>
</dependency>

jetbrains.annotations还提供以下注解
在这里插入图片描述

三、拓展知识

那么平常用到的@NotNull等判断注解是哪个依赖呢,首先了解一下相关知识:
@NotNull 是一个常用的 校验注解(Validation Annotation),与之类似的还有@Min@Valid等等。由于校验太重要了,Java把相关内容抽象成了一个标准规范Java Bean Validation,目前已经从JSR 303的1.0版本升级到JSR 349的1.1版本,再到JSR 380的2.0版本(JSR 380: Bean Validation 2.0),已经经历了三个版本
https://www.jcp.org/en/jsr/summary?id=Bean+Validation
在这里插入图片描述
Java Bean Validation官网)包含Bean Validation API(规范标准)Hibernate Validator(具体实现)

  • Validation API 规范的依赖:
<!-- https://mvnrepository.com/artifact/jakarta.validation/jakarta.validation-api -->
<dependency>
    <groupId>jakarta.validation</groupId>
    <artifactId>jakarta.validation-api</artifactId>
    <version>3.1.1</version>
</dependency>

<!-- 旧版 Relocated → jakarta.validation » jakarta.validation-api -->
<!-- https://mvnrepository.com/artifact/javax.validation/validation-api -->
<dependency>
    <groupId>javax.validation</groupId>
    <artifactId>validation-api</artifactId>
    <version>2.0.1.Final</version>
</dependency>
  • Hibernate Validator 实现的依赖
<!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-validator -->
<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-validator</artifactId>
    <version>8.0.2.Final</version>
</dependency>

Hibernate Validator 内部集成了 Validation API ,不过没用最新版本
在这里插入图片描述

  • Spring Boot 集成依赖
    spring-boot-starter-validation再次集成了hibernate-validator,如果使用 Spring Boot 框架,一般推荐使用 spring-boot-starter-validation
<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-validation -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-validation</artifactId>
    <version>3.4.5</version>
</dependency>

用的也不是hibernate-validator的最新版,不过也够用了。
在这里插入图片描述


四、参考文献

  1. @NotNull 注解也能搞错?同事这波操作让我直接裂开
  2. 注解@NotNull
  3. 深入了解数据校验:Bean Validation 2.0(JSR380)
  4. Java_Bean验证基础知识
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值