Spring Null-safety

尽管Java不允许您使用其类型系统来表示空安全性,但是Spring Framework现在在org.springframework.lang包中提供了以下注释,以使您声明API和字段的空性:

  • @Nullable:表示特定参数,返回值或字段可以为null的注释。
  • @NonNull:表示特定参数,返回值或字段不能为null的注释
  • @NonNullApi:程序包级别的注释,它声明非空为参数和返回值的默认语义。
  • @NonNullFields:程序包级别的注释,它声明非null为字段的默认语义。

Spring框架本身利用了这些注释,但是它们也可以在任何基于Spring的Java项目中使用,以声明null安全的API和可选的null安全的字段。尚不支持泛型类型参数,varargs和数组元素的可空性,但应在即将发布的版本中使用它们

其他常见的库(例如Reactor和Spring Data)提供了使用类似可空性设置的空安全API,从而为Spring应用程序开发人员提供了一致的总体体验。

7.1 用例

除了为Spring Framework API可空性提供显式声明之外,IDE(例如IDEA或Eclipse)还可以使用这些注释来提供与空安全性相关的有用警告,从而避免在运行时出现NullPointerException。

由于Kotlin原生支持null安全,因此它们还用于在Kotlin项目中使Spring API为null安全。 Kotlin支持文档中提供了更多详细信息。

7.2 JSR-305元注解

Spring注释使用JSR 305注释(休眠但广泛使用的JSR)进行元注释。 JSR-305元注释使工具供应商(如IDEA或Kotlin)以通用方式提供了空安全支持,而无需对Spring注释进行硬编码支持。

既不需要也不建议向项目类路径添加JSR-305依赖项以利用Spring空安全API。只有诸如在其代码库中使用空安全注释的基于Spring的库之类的项目才应添加com.google.code.findbugs:jsr305:3.0.2的compileOnly Gradle配置或Maven提供的范围,以避免编译警告。

参考文献

【https://docs.spring.io/spring-framework/docs/current/reference/html/core.html】【7. Null-safety】

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值