Spring注解@NonNull作用 Spring注解@Nullable作用 Spring NonNull 注解作用 Spring Nullable注解作用

news2024/11/29 20:36:53

Spring注解@NonNull作用 Spring注解@Nullable作用 Spring NonNull 注解作用 Spring Nullable注解作用

一、概述

        在看Spring源码的时候,经常会发现有 @NonNull 或 @Nullable 注解的标记,一般是在方法上,或在 参数中,本着好奇的心里,研究下这2个注解的作用是什么呢?

 

二、代码理解

        1、@NonNull: org.springframework.lang.NonNull

        2、@Nullable: org.springframework.lang.Nullable

        3、写一段代码测试,验证 NonNull 和 Nullable 注解是否有参数验证功能

@RunWith(SpringRunner.class)
@SpringBootTest
public class NullableSpringTest {

    @Test
    public void test() throws Exception{
        say("小明","北京市");
        say(null,null);
    }

    public void say(@NonNull String name , @Nullable String addr){
        System.out.println("@NonNull name ="+ name+ " ; @Nullable  addr = " + addr);
    }
}

        4、执行完毕后,输出结果如下:

@NonNull name =小明 ; @Nullable  addr = 北京市
@NonNull name =null ; @Nullable  addr = null

三、总结

        1、根据【二-4】中测试输出的结果可知: @NonNull 或 @Nullable , 没有参数验证功能,只是一个标记注解,告知调用方:是否允许为null的情况。

  • @NonNull : 表示不能为null
  • @Nullable : 表示允许为null

        2、作用范围是: 方法上、参数、字段(类属性上)

@Target({ElementType.METHOD, ElementType.PARAMETER, ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Nonnull(when = When.MAYBE)
@TypeQualifierNickname
public @interface Nullable {
    
}

        3、在阿里技术出品《Java工程师必读手册》 , 也提到过 @NonNull 和@Nullable 标注参数。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/3256.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【JavaWeb】第三章 JavaScript基础

文章目录1、JavaScript介绍2、JavaScript和HTML代码的结合方式2.1 第一种方式2.2 第二种方式3、JS的变量和数据类型4、JS关系运算符5、JS逻辑运算符6、数组7、JS函数的定义8、JS函数的隐形参数arguments9、JS中的自定义对象1、JavaScript介绍 JavaScript(JS&#x…

摸鱼时,我用几百张字符画做了个动画......

摸鱼时,我用几百张字符画做了个动画…,话不多说,先来看成果: 完整效果视频已上传至B站:摸鱼时我用Java IO流证明了爱坤! 事情是这样的… … 学校马上就要开展第20届程序设计大赛了,半年没有练…

Java对象深拷贝 终极方案 deep clone an object

Java对象深拷贝 终极方案定义 深拷贝深拷贝常见误区spring / apache commons 等工具类的 BeanUtils.copy 方法 ❌正确做法: 上中下3策 ✔json 序列化 (用jackson,别用其他的gson/fastjson/json-lib 等,不解释)objectMapper 工具类初始化1. 对…

CDC Schemes

CDC Schemes 下面是一些questa使用时常见的cdc schemes的解释 reconvergence reconvergence的原理如下图所示 如上图所示,sig1和sig2经sync cell同步过来后,又在组合逻辑上reconvergence了,最后送到rx domain的flip-flop上; Fan-in of a flip-flop includes at least t…

跨境物流美国专线的注意事项是哪些

目前国内运输需求最大的物流运输是美国专线,深圳、广州、杭州等地有很多美国专线货运公司。虽然每个人的选择都比较灵活,但是专线物流运输也有很多注意事项,否则会影响货物的运输。那么对于跨境物流美国专线的注意事项,你了解多少…

7. Spring Boot2.5 安全机制与 REST API 身份验证实战

文章目录Spring Boot2.5 安全机制与 RESTAPI 身份验证实战一、Java Spring Boot 2.5 安全机制Java Spring Boot 2.0 安全机制安全漏洞安全漏洞建议总结:Java Spring SecurityJava 安全框架 Shiro二、Java Spring Boot 2.5 安全实战Spring Security Demo2. WebSecuri…

【Python】pyinstaller打包百科全书

前言 记录pyinstaller打包中的常用命令和报错。 详细的还是去官网自己看吧,这里只记录打包中常用到的命令。 如果我这里帮助不到你, 官网在这里:https://github.com/pyinstaller/pyinstaller 这两篇文章基本覆盖100%的报错了, 参…

【微服务】分布式下服务调用产生的问题之服务容错

服务容错前言模拟高并发场景压测测试服务雪崩效应常见容错方案隔离超时限流熔断降级常见的容错组件HystrixResilience4JSentinel总结前言 上篇中,我们了解了Ribbon的概念,也实现了基于Ribbon的服务调用,但同样也引发了另一个问题&#xff0c…

什么?“裸辞”一个月拿到13家offer,网友:你是在找存在感吗···

相信大家都知道天下分久必合、合久必分的道理,所以,一旦行业发展成熟,必定会重新洗牌,就像朝代的更替一样,去其糟粕,取其精华!现在互联网发展就是遇到了这样的瓶颈期,出现了衰退&…

【Mac】VSCode 更新1.73版本后JSTS代码跳转异常

前言 今天有小伙伴MacOS更新了VS Code版本后,说工程内的代码跳转全部异常了,没法正确跳转。搞了两三个小时没搞出来,找到了我,让我帮忙瞧瞧。排查下来发现这问题有点意思,故此记录一下。 问题 排查姿势 1. 提示没有定…

【数据结构】单链表

文章目录单链表链表的概念及结构链表的分类链表的实现动态申请一个节点创建链表单链表打印单链表尾插单链表尾删单链表头插单链表头删单链表 链表的概念及结构 概念:链表是一种物理存储结构上连续、非顺序的存储结构,数据元素的逻辑顺序 是通过链表中的…

代码中统一异常如何处理,才能让代码更清晰

背景 软件开发过程中,不可避免的是需要处理各种异常,甚至有一半以上的时间都是在处理各种异常情况,所以代码中就会出现大量的try {...} catch {...} finally {...} 代码块,不仅有大量的冗余代码,而且还影响代码的可读…

力扣刷题链表需要调试?一个简单的调试器帮你解决苦恼

本人在刷链表题时,由于是新手,所以老是过不去,需要调试,力扣会员开不起,在VS自己创建一个链表太麻烦 ,所以就有了今天这个 对于懒人的调节力扣链表便捷器 这个东西很简单,但是很有效 文章目录1.…

python数学建模--sympy三维图像绘制

目录问题引出库选择与绘制准备plot3d类api简介图像绘制与参数说明关键字参数绘图举例绘图的案例三角函数另一个三角函数问题引出 在求解二元函数最值的时候,我们不知道自己经过若干个步骤求出的结果是否正确,那么我们该怎么办呢?一种办法就是…

学完Python,不做程序员,只接兼职,哎,就是玩儿

现在这个时代,人人开始追求做斜杠青年,多方面开展副业,赚取几份工资。有很多朋友就抓住了Python的风口,靠着Python兼职月入一万。那么学完Python,有哪些可以做的兼职呢? 一、闲暇时间,接自由单…

2020年数维杯数学建模B题以家庭为单位的小规模多品种绿色农畜产品经营模式开发求解全过程文档及程序

2020年数维杯数学建模 B题 以家庭为单位的小规模多品种绿色农畜产品经营模式开发 原题再现: 在全球化疫情蔓延和国民生活水平稳步提高大形势下,居民对于绿色农畜产品的需求可能会迎来新的爆发期。传统大规模种植或养殖模式因其较大的风险、产品质量的非…

第四章 带头双向链表的讲解与实现

初阶数据结构 第一章 时间复杂度和空间复杂度 第二章 动态顺序表的实现 第三章 单向链表的讲解与实现 第四章 带头双向链表的讲解与实现 文章目录初阶数据结构前言一、什么是头节点(哨兵位)二、双向链表结点的定义三、接口函数的实现1、初始化2、尾插3、…

【附源码】计算机毕业设计java中国朝鲜族民族特色服务系统设计与实现

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

超全,看完这份微服务架构与实践文档,微服务不再难

前言: 微服务近年来受到了极大的关注并成为趋势,不信的话可以查看 Google Trends。 可以看到从2014年开始人们对它产生了极大的兴趣,随着时间的推移,这一趋势仍在增长。 随着数字化转型的推进,越来越多的企业开始尝…

IntelliJ IDEA禁止某些文件夹indexing

IntelliJ IDEA禁止某些文件夹indexing 文章目录IntelliJ IDEA禁止某些文件夹indexing问题描述方法一:标记文件夹为Exclude方法二:.iml文件中手动加入excludeFolder节点方法三:直接加入IDEA忽略文件和文件夹列表问题描述 IDEA启动后&#xff…