|
对于最新的稳定版本,请使用 Spring Framework 7.0.6! |
Null-safety
Kotlin 的一个关键特性是 空安全性,
这在编译时干净地处理 null 值,而不是在运行时遇到著名的
NullPointerException。通过空值声明和无需付出包装器(如 Optional)的代价来表达“有值或无值”的语义,这使应用程序更安全。
(Kotlin 允许对可为空的值使用函数式结构。参见此
Kotlin 空安全性全面指南。)
尽管 Java 无法在其类型系统中表达空安全,但 Spring 框架通过在 org.springframework.lang 包中声明的对工具友好的注解提供了整个 Spring 框架 API 的空安全。
默认情况下,Kotlin 中使用的 Java API 类型被识别为
平台类型,
对于这些类型,空检查是放松的。
JSR-305 注解的 Kotlin 支持
和 Spring 空值注解为 Kotlin 开发者提供了整个 Spring 框架 API 的空安全,
其优势是在编译时处理 null 相关的问题。
| 像Reactor或Spring Data这样的库提供了空安全的API来利用此功能。 |
您可以通过添加带有以下选项的 -Xjsr305 编译器标志来配置 JSR-305 检查: -Xjsr305={strict|warn|ignore}。
对于 Kotlin 版本 1.1+,默认行为与 -Xjsr305=warn 相同。
strict 的值要求在从 Spring API 推断的 Kotlin 类型中考虑 Spring Framework API 的空安全性
但应意识到 Spring API 的空性声明可能在小版本之间发生变化,并且未来可能会添加更多的检查。
| 泛型类型参数、可变参数和数组元素的空性目前还不受支持, 但将在未来的版本中加入。请参阅 此讨论 以获取最新信息。 |