使用Spring 的 Null-Safety免受空指標錯誤
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 的可空性。
相關文章
- C指標錯誤指標
- 如何避免Java程式碼中的空指標錯誤NullPointerException? - foojayJava指標NullException
- 如何避免空指標出錯?指標
- 為什麼回覆貼子的時候又出現“空指標”錯誤指標
- 野指標 空指標指標
- Java 14版本中將加入發現空指標錯誤提示功能Java指標
- 我還以為空指標錯誤是我安裝不來...指標
- 防止空指標指標
- 使用 C++11 智慧指標時要避開的 10 大錯誤C++指標
- 使用Java 8 Optional避免空指標異常Java指標
- 又見懸空指標指標
- GO 空指標和nilGo指標
- NullPointerException空指標異常的理解NullException指標
- Spring中new出一個物件導致的空指標異常Spring物件指標
- 8.空指標異常指標
- IDEA多執行緒下空指標斷點除錯Idea執行緒指標斷點除錯
- 【MybatisPlus】資料庫的datetime型別欄位為空的時候,報錯空指標?MyBatis資料庫型別指標
- Spring boot/Spring 統一錯誤處理方案的使用Spring Boot
- Swift 中的指標使用Swift指標
- 使用 Spring Framework 時常犯的十大錯誤SpringFramework
- SpringDateJpa使用JpaRepository方法出現空指標異常的問題Spring指標
- Java8的Optional:如何幹掉空指標?Java指標
- java 空指標異常造成的原因有哪些Java指標
- Java中如何避免空指標異常Java指標
- 使用 Spring Boot 提供API錯誤訊息的好方式Spring BootAPI
- 程式的虛擬地址空間——NULL指標分割槽Null指標
- getter,setter 直接修改造成的空指標異常指標
- spring錯誤彙總Spring
- C語言指標安全及指標使用問題C語言指標
- bad 指標的這種錯誤指標
- Java中如何處理空指標異常Java指標
- 空指標漏洞防護技術(提高篇)指標
- NULL 指標、零指標、野指標Null指標
- Swift中的指標操作及使用Swift指標
- C#中使用指標C#指標
- 關於sizeof,對空指標sizeof(*p)可以嗎?指標
- Kafka SimpleStringSchema 可能會造成空指標異常Kafka指標
- java.lang.NullPointerException 空指標異常問題JavaNullException指標