关于Spring Boot中@NotNull,@Size "Cannot resolve symbol XXX"

434 阅读1分钟

0 问题描述

将Spring Boot从2.1.8升级到最新版的2.3.2后提示@NotEmpty,@Valid等注解无效,找不到javax.validation.constraints.NotEmpty,javax.validation.Valid类。

1 解决方法

今天在学习Spring实战一书过程中,在添加注解的时候显示了找不到这个Size,经过查询资料,在Spring的release note中看到:

4600bvk4b4h39pl1bvca0ttsv3.jpg

Spring Boot 2.3 Release Notes中可以发现,原来从2.3版本开始,Spring Boot的starter包不再默认包含spring-boot-starter-validation库了,也就是说如果没有声明引入该库,将会提示javax.validation.*相关的类找不到,所以要继续使用@ Valid@ NotEmpty等注解的话,我们需要引入该库。

对于Maven,使用如下代码:

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>

Gradle使用如下:

dependencies {
...
implementation 'org.springframework.boot:spring-boot-starter-validation'
}

2 后记(吐槽)

《Spring in practice》(Spring实战第五版)这本书才读到第二章的一半,问题太多了,遇到了排版错误,还遇到了代码错误,去官网上拉到的代码也是错的,要么就是过时的,还需要自己一点点去解决。