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

Null-safety

Kotlin 的一个关键特性是 空安全性, 这在编译时干净地处理 null 值,而不是在运行时遇到著名的 NullPointerException。通过空值声明和无需付出包装器(如 Optional)的代价来表达“有值或无值”的语义,这使应用程序更安全。 (Kotlin 允许对可为空的值使用函数式结构。参见此 Kotlin 空安全性全面指南。)spring-doc.cadn.net.cn

尽管 Java 无法在其类型系统中表达空安全,但 Spring 框架通过在 org.springframework.lang 包中声明的对工具友好的注解提供了整个 Spring 框架 API 的空安全。 默认情况下,Kotlin 中使用的 Java API 类型被识别为 平台类型, 对于这些类型,空检查是放松的。 JSR-305 注解的 Kotlin 支持 和 Spring 空值注解为 Kotlin 开发者提供了整个 Spring 框架 API 的空安全, 其优势是在编译时处理 null 相关的问题。spring-doc.cadn.net.cn

像Reactor或Spring Data这样的库提供了空安全的API来利用此功能。

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

对于 Kotlin 版本 1.1+,默认行为与 -Xjsr305=warn 相同。 strict 的值要求在从 Spring API 推断的 Kotlin 类型中考虑 Spring Framework API 的空安全性 但应意识到 Spring API 的空性声明可能在小版本之间发生变化,并且未来可能会添加更多的检查。spring-doc.cadn.net.cn

泛型类型参数、可变参数和数组元素的空性目前还不受支持, 但将在未来的版本中加入。请参阅 此讨论 以获取最新信息。