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

零安全

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

Spring Framework 本身利用这些注释,但它们也可以用于任何 基于Spring的Java项目,用于声明空安全API,并可选地声明空安全字段。 通用类型参数、varargs 和数组元素的可空性声明尚未被支持。 Nullability声明预计将在Spring Framework版本之间进行微调, 包括一些小问题。方法体内使用的类型可空性在 本功能范围。spring-doc.cadn.net.cn

其他常见库如 Reactor 和 Spring Data 提供空安全 API,满足条件 使用类似的空可性安排,提供一致的整体体验 Spring 应用开发者。

使用场景

除了为 Spring Framework API 的可空性提供显式声明外, 这些注释可以被IDE(如IDEA或Eclipse)用来提供有用的信息 关于零安全(null-safety)的警告,以防避免NullPointerException在运行时。spring-doc.cadn.net.cn

它们也被用来使 Kotlin 项目中的 Spring API 实现空安全,因为 Kotlin 本身就是原生的 支持零安全。更多细节 可在Kotlin支持文档中找到。spring-doc.cadn.net.cn

JSR-305元注释

春季注释采用 JSR 305 注释进行元注释(这是一种休眠但广泛使用的 JSR)。JSR-305 元注释让工具厂商得以实现 像 IDEA 或 Kotlin 以通用方式提供零安全支持,无需 支持Spring注释的硬代码。spring-doc.cadn.net.cn

既不必要也不推荐在 的项目类路径中添加 JSR-305 依赖 利用 Spring 的空安全 API。只有像基于 Spring 的库这样的项目,使用 代码库中的空安全注释应会添加com.google.code.findbugs:jsr305:3.0.2仅编译Gradle 配置或 Maven提供以避免编译器警告的范围。spring-doc.cadn.net.cn