NullPointerExceptions(通常简称为“NPE”)是每个 Java 程序员的噩梦。
我们可以在互联网上找到大量解释如何编写空安全代码的文章。空安全确保我们在代码中添加了适当的检查,以确保对象引用不能为空,或者在对象为空时采取可能的安全措施,毕竟。
由于NullPointerException是运行时异常,因此在代码编译期间很难找出这种情况。Java 的类型系统没有办法快速消除危险的空对象引用。
幸运的是,Spring Framework 提供了一些注释来解决这个确切的问题。在本文中,我们将学习如何使用这些注解来使用Spring Boot编写 null 安全代码。
本文附有GitHub 上的一个工作代码示例。
Spring中的空安全注释
Spring核心包下org.springframework.lang,有4个这样的注解:
- @NonNull,
- @NonNullFields,
- @Nullable,
- @NonNullApi.
Eclipse 和 IntelliJ IDEA 等流行的 IDE 可以理解这些注释。他们可以在编译期间警告开发人员潜在的问题。
我们将在本教程中使用 IntelliJ IDEA。让我们通过一些代码示例了解更多信息。
.....
如果我们想在构建管道中进行一些自动代码检查,这在某种程度上也是可行的。
SpotBugs(著名但废弃的FindBugs项目的转世)提供了一个 Maven/Gradle 插件,可以检测由于可空性导致的代码异味。让我们看看如何使用它。
对于 Maven 项目,我们需要更新pom.xml以添加SpotBugs Maven 插件:
<plugin> |
构建项目后,我们可以使用此插件中的以下目标:
- 目标分析spotbugs目标项目。
- check目标运行目标并在spotbugs发现任何错误时使构建失败。
Kotlin使用一些注解来推断 Spring API 的可空性。