一、问题描述
查看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的最新版,不过也够用了。