使用Spring 的 Null-Safety免受空指標錯誤

banq發表於2022-02-06

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>
  <groupId>com.github.spotbugs</groupId>
  <artifactId>spotbugs-maven-plugin</artifactId>
  <version>4.5.2.0</version>
  <dependencies>
    <!-- overwrite dependency on spotbugs if you want to specify the version of spotbugs -->
    <dependency>
      <groupId>com.github.spotbugs</groupId>
      <artifactId>spotbugs</artifactId>
      <version>4.5.3</version>
    </dependency>
  </dependencies>
</plugin>


構建專案後,我們可以使用此外掛中的以下目標:
  • 目標分析spotbugs目標專案。
  • check目標執行目標並在spotbugs發現任何錯誤時使構建失敗。


Kotlin使用一些註解來推斷 Spring API 的可空性。

相關文章