在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
。
lutool 1.x 中复制了spring 5中的 jsr-305
相关注解到源码中,到 mica - Spring boot 微服务开发核心包 因为依赖的 Spring boot 2.1.x
,则直接使用 spring core
中的注解。cookie
@NonNullFields
表示Field
不为null。@NonNullApi
表示方法参数
和返回值
不为null。@NonNull
,使用方式同下文@Nullable
。在包下添加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/pig SpringBlade
完整的线上解决方案(企业开发必备):gitee.com/smallc/Spri… IJPay
支付SDK让支付触手可及:gitee.com/javen205/IJ… 扫描上面二维码,更多精彩内容天天推荐!微服务