对于最新的稳定版本,请使用 Spring Framework 7.0.6!spring-doc.cadn.net.cn

Null-safety

虽然Java不允许你通过其类型系统表达空安全,但Spring框架在org.springframework.lang包中提供了以下注解,让你可以声明API和字段的可为空性:spring-doc.cadn.net.cn

Spring框架本身利用这些注解,但也可以在任何基于Spring的Java项目中用于声明可空安全的API以及可选的可空安全字段。 目前尚不支持泛型参数、可变参数和数组元素的可空性声明。 可空性声明预计将在Spring框架版本(包括次要版本)之间进行微调。 方法体内使用的类型可空性不在本功能范围内。spring-doc.cadn.net.cn

其他常用库(如 Reactor 和 Spring Data)提供了防空 API,这些 API 使用类似的空值安排,为 Spring 应用程序开发人员提供了一致的整体体验。

使用场景

除了为Spring Framework API提供显式声明外,这些注解还可以被IDE(如IntelliJ IDEA或Eclipse)使用,以提供有关null安全性的有用警告,从而避免在运行时出现null的情况。spring-doc.cadn.net.cn

它们还用于在Kotlin项目中使Spring API具有空安全特性,因为Kotlin原生支持空安全机制。 更多细节请参阅Kotlin支持文档spring-doc.cadn.net.cn

JSR-305元注解

Spring注解通过JSR 305注解(一个休眠但广泛使用的JSR)进行元注解。JSR-305元注解允许工具提供商(如IDEA或Kotlin)以通用方式提供空值安全支持,而无需对Spring注解进行硬编码支持。spring-doc.cadn.net.cn

为了利用Spring的空安全API,既不必要也不推荐在项目类路径中添加JSR-305依赖。只有像基于Spring的库这类在代码库中使用空安全注解的项目,才应通过com.google.code.findbugs:jsr305:3.0.2compileOnly Gradle配置或Maven的provided作用域添加该依赖,以避免编译器警告。spring-doc.cadn.net.cn