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

Null-safety

Kotlin 的关键特性之一是空安全(null-safety), 它在编译时就能清晰地处理null值,而不是在运行时遭遇著名的 NullPointerException。通过可空性声明,该特性使应用程序更加安全, 并能以“有值或无值”的语义表达,而无需付出使用包装器(如Optional)的代价。 (Kotlin 允许对可空值使用函数式构造。参见这份 Kotlin 空安全全面指南。)spring-doc.cadn.net.cn

尽管 Java 无法在其类型系统中表达空安全(null-safety),但 Spring 框架通过在 # 包中声明的、对工具友好的注解,为整个 Spring 框架 API 提供了空安全性。 默认情况下,Kotlin 中使用的 Java API 类型会被识别为平台类型(platform types),对其空值检查会有所放宽。 Kotlin 对 JSR-305 注解的支持以及 Spring 的可空性注解为 Kotlin 开发者提供了整个 Spring 框架 API 的空安全性,其优势在于可以在编译时处理与 null 相关的问题。spring-doc.cadn.net.cn

诸如 Reactor 或 Spring Data 之类的库提供了空安全(null-safe)的 API 来利用此特性。

你可以通过添加 -Xjsr305 编译器标志并使用以下选项来配置 JSR-305 检查:-Xjsr305={strict|warn|ignore}spring-doc.cadn.net.cn

对于 Kotlin 1.1 及以上版本,默认行为与 -Xjsr305=warn 相同。 要使 Spring Framework API 的空安全特性在从 Spring API 推断出的 Kotlin 类型中生效,需要使用 strict 值,但应了解 Spring API 的可空性声明即使在次要版本之间也可能发生变化,并且未来可能会加入更多检查。spring-doc.cadn.net.cn

泛型类型参数、可变参数(varargs)和数组元素的可空性目前尚不支持, 但将在即将发布的版本中提供。请参阅此讨论 以获取最新信息。