在Spring 5
的 spring-core jar包中添加了 jsr-305
相關注解。在 Spring
源碼中已經被大量使用。以下圖:vue
諸如 FindBugs、IntelliJ、Checkstyle 和 PMD 這樣的靜態分析工具在 Java 開發中獲得了普遍應用。這些工具都很強大,可是有一些共同的問題它們都很難解決。在 API 的設計中,有一些決策是不言而喻的,好比什麼時候值能夠爲 null,或者什麼時候數字值不能爲負。完備的 API 會將這些設計細節記錄在 JavaDoc 之中,可是分析工具卻沒法發現相似細節,從而有可能將其忽略或是致使錯誤的檢測結果。java
爲了解決這些問題,有些靜態分析工具開發人員試圖使用註解來定義相關細節。好比 FindBugs 和 IntelliJ 都定義了本身的註解,以表示方法什麼時候返回 null。不過,這兩個工具使用的註解有細微不一樣,也所以有了標準化的需求。由 FindBugs 建立人 Bill Pugh 帶領制定的 JSR-305 標準,試圖建立一套標準註解供分析工具使用,同時但願容許開發人員根據本身的須要添加額外的註解。當前提案中包括供判斷是否爲空、正負號、開發語言和線程等方面的衆多註解。git
更多jsr-305介紹請查看,JSR-305:供檢查軟件缺陷用的註解spring
由上文的介紹,咱們知曉了 jsr-305
的目標:供檢查軟件缺陷用。方便靜態代碼檢查工具及時查找出潛在的 bug。因此這些註解特別適合基礎組件和工具包,加強 IDE
提示,減小潛在 bug
。cookie
lutool 1.x 中複製了spring 5中的 jsr-305
相關注解到源碼中,到 mica - Spring boot 微服務開發核心包 因爲依賴的 Spring boot 2.1.x
,則直接使用 spring core
中的註解。架構
@NonNullFields
表示Field
不爲null。框架
@NonNullApi
表示方法參數
和返回值
不爲null。編輯器
對於不想使用包級別不爲null,可直接使用@NonNull
,使用方式同下文@Nullable
。ide
在包下添加package-info.java
,內容以下。微服務
@NonNullApi
@NonNullFields
package net.dreamlu.mica.core.utils;
import org.springframework.lang.NonNullApi;
import org.springframework.lang.NonNullFields;
複製代碼
添加完該註解後編寫代碼時編輯器會給出提示,以下圖:
@Nullable
對於部分可爲空的Field
、方法參數
和返回值
須要使用@Nullable
進行標示。
public static boolean isBlank(@Nullable final CharSequence cs) {
return !StringUtils.hasText(cs);
}
複製代碼
@Nullable
public static String getCookieVal(HttpServletRequest request, String name) {
Cookie cookie = getCookie(request, name);
return cookie != null ? cookie.getValue() : null;
}
複製代碼
@Nullable
private String msg;
複製代碼
mica
Spring boot 微服務核心組件集:gitee.com/596392912/m…Avue
一款基於vue可配置化的神奇框架:gitee.com/smallweigit…pig
宇宙最強微服務(架構師必備):gitee.com/log4j/pigSpringBlade
完整的線上解決方案(企業開發必備):gitee.com/smallc/Spri…IJPay
支付SDK讓支付觸手可及:gitee.com/javen205/IJ…掃描上面二維碼,更多精彩內容天天推薦!