概括
因为在开发中经常会用到这两个注解,但是对于具体区别倒是没有在意,收集整了一下,来对这两个注解进行区别。
@notNull
使用该注解后,对于该注解后面的参数添加了一层校验,校验的条件是值不能为null
。但是可以
"" ,''
这种值,所以一般用在基本数据类型上面。
@NotNull(message = "Field cannot be null")
private String name;
@notEmpty
该注解会确保字段的值不仅不为 null,并且对于集合、字符串等,不能为空(例如,字符串不能为空字符串,集合不能为空)。
通常用于验证 String、Collection、Map 等类型的字段进行添加校验。相比于@NotNull
更加严谨一点,能够更好的保证不出现空指针异常。
@NotEmpty(message = "Field cannot be empty")
private String name;
同样还可以再Controller层进行使用。如下所示:
public ResponseVO uploadImage(@NotNull MultipartFile file, @NotNull Boolean createThumbnail) {
String month = DateUtils.format(new Date(), DateTimePatternEnum.YYYYMM.getPattren());
String folder = appConfig.getProjectFolder() + Constants.FILE_FOLDER + Constants.FILE_COVER + month;
File folderFile = new File(folder);
if (!folderFile.exists()) {
folderFile.mkdirs();
}
String filename = file.getOriginalFilename();
String substring = StringTools.getFileSuffix2(filename);
String realFileName = StringTools.getRandomNumber(Constants.LENGTH_30) + substring;
String filePath = folder + "/" + realFileName;
if (createThumbnail) {
// 生成缩略图
fFmpegUtils.createImageThumbnail(filePath);
}
return getSuccessResponseVO(Constants.FILE_COVER + month + "/" + realFileName);
}
不过需要注意的是导入的包和上面的不同。
import org.springframework.validation.annotation.Validated;