首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Lombok的@NonNull在验证期间干扰javax.validation.constraints.NotNull

Lombok的@NonNull注解是一种在编译期间进行非空验证的注解。它与javax.validation.constraints.NotNull注解在验证期间可能会产生冲突。

@NonNull注解是Lombok库中的一个注解,它可以应用于方法参数、方法返回值、字段和局部变量上。使用@NonNull注解可以告诉编译器,被注解的元素不能为空,从而在编译期间自动生成非空检查的代码。这样可以减少手动编写非空检查的工作量,提高代码的简洁性和可读性。

而javax.validation.constraints.NotNull注解是Java Bean Validation(JSR 380)规范中定义的注解之一,用于在运行时进行对象验证。它可以应用于方法参数、字段和方法返回值上,用于标记这些元素不能为空。在运行时,通过验证器对被注解的元素进行验证,如果为空,则会抛出验证异常。

由于Lombok的@NonNull注解是在编译期间进行非空验证的,而javax.validation.constraints.NotNull注解是在运行时进行验证的,因此它们在验证期间可能会产生干扰。具体来说,当使用Lombok的@NonNull注解时,编译器会自动生成非空检查的代码,而运行时的验证器可能会认为这些被注解的元素已经在编译期间进行了非空验证,从而跳过运行时的验证。

为了避免这种干扰,可以采取以下几种解决方案:

  1. 优先选择使用Lombok的@NonNull注解,避免同时使用javax.validation.constraints.NotNull注解。这样可以确保在编译期间进行非空验证,并且不会产生运行时的验证干扰。
  2. 如果需要同时使用Lombok的@NonNull注解和javax.validation.constraints.NotNull注解,可以通过配置Lombok的注解处理器来解决冲突。具体来说,可以在IDE或构建工具中配置Lombok的注解处理器,使其在生成代码时排除对javax.validation.constraints.NotNull注解的处理。

总之,Lombok的@NonNull注解和javax.validation.constraints.NotNull注解都是用于非空验证的注解,但它们在验证期间可能会产生干扰。因此,在使用时需要注意选择合适的注解,并根据具体情况采取相应的解决方案。

腾讯云相关产品和产品介绍链接地址:

  • 腾讯云开发者平台:https://cloud.tencent.com/developer
  • 云服务器(CVM):https://cloud.tencent.com/product/cvm
  • 云原生应用引擎(TKE):https://cloud.tencent.com/product/tke
  • 人工智能(AI):https://cloud.tencent.com/product/ai
  • 物联网(IoT):https://cloud.tencent.com/product/iotexplorer
  • 移动开发(移动推送、移动分析):https://cloud.tencent.com/product/mobile
  • 云数据库(CDB):https://cloud.tencent.com/product/cdb
  • 腾讯云存储(COS):https://cloud.tencent.com/product/cos
  • 腾讯云区块链服务(BCS):https://cloud.tencent.com/product/bcs
  • 腾讯云元宇宙(Tencent Cloud Metaverse):https://cloud.tencent.com/solution/metaverse
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

SpringBoot入门建站全系列(三十三)集成validator校验接口数据

SpringBoot入门建站全系列(三十三)集成validator校验接口数据 一、概述 开发中经常需要写一些字段校验代码,比如字段非空,字段长度限制,邮箱格式验证等等,如果我们直接将这些校验写死代码里...CharSequence @Size(min=最小值, max=最大值) 验证注解元素值min和max(包含)指定区间之内,如字符长度、集合大小 CharSequence,Collection,...(字符串长度不为0、集合大小不为0) CharSequence,Collection,Map和数组 @Range(min=最小值, max=最大值) 验证注解元素值最小值和最大值之间 CharSequence...验证注解元素值长度min和max区间内 CharSequence @Email 验证注解元素值是Email,也可以通过正则表达式和flag指定自定义email格式 CharSequence @...CharSequence @CodePointLength 验证带注释字符序列代码点长度之间min并max包括在内。

1K10

Validated分组校验及扩展

@Validated分组校验及扩展 一、介绍 springBoot项目中,我们往往要对参数进行校验,如果在代码中进行,就会显得很杂乱冗余 我以前有介绍过@Valid注解使用和扩展 但上面这篇文章整理相关知识点有局限性...; import lombok.NoArgsConstructor; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull...; import lombok.NoArgsConstructor; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull...@Valid注解即可 由于List集合有点特殊,它需要在指定泛型地方打上@Valid,这样才可以对集合中每一个对象进行校验 3)多字段联动校验 如何进行多字段之间联动校验,就像开头讲到那个例子一样...; import lombok.NoArgsConstructor; import javax.validation.constraints.AssertTrue; import javax.validation.constraints.NotNull

1.1K50

简化开发|Lombok神器带你消除冗余代码

对于这些方法,它能够在编译源代码期间自动帮我们生产这些方法,并没有如反射那样降低程序性能。本文将带大家详细介绍关于Lombok使用以及原理。 公众号:「浅羽IT小屋」 1....2、Lombok安装 「安装步骤:」 IDEA插件Plugins中搜索Lombok ? 安装Lombok ?...「注意:」 使用Lombok注解时候记得要导入Lombok.jar包到工程,Maven Project的话,要在pom.xml中添加依赖 org.projectlombok...「常用注解:」 Lombok注解说明 * val:用在局部变量前面,相当于将变量声明为final * @NonNull:给方法参数增加这个注解会自动方法内对该参数进行是否为空校验,如果为空,则抛出...@NonNull属性作为参数构造函数,如果指定staticName = “of”参数,同时还会生成一个返回类对象静态工厂方法,比使用构造函数方便很多 * @Data:注解类上,相当于同时使用了@ToString

51610

SpringBoot-表单验证-统一异常处理-自定义验证信息源

自定义验证 很多时候框架提供功能并不能满足我们业务场景,这时我们需要自定义一些验证规则来完成验证。...调用过程验证 有的时候我们参数传输过程中需要对传入对象做参数验证,但是上面介绍都是对参数绑定时验证,那能不能使用validation进行验证呢? 答案肯定是可以。...5.1 使用 spring bean 5.1.1 注入validator bean validator 是我们config文件中定义bean,如果使用了springboot默认配置ValidationAutoConfiguration...统一异常处理 在上面的参数验证中,验证错误信息是通过BindingResult result参数进行接收每个方法中异常处理如出一辙,特别麻烦。...甚至step 5,6都是直接将异常堆栈信息返回给前端,这对于用来说是非常不友好。而且有的情况下需要我们主动抛出业务异常,比方用户不能直接删除已绑定用户角色。 所以,开撸。

2.3K30

一份不可多得 Lombok 学习指南

开发环境中使用 Lombok 插件后,Java 开发人员可以节省出重复构建,诸如 hashCode 和 equals 这样方法以及各种业务对象模型 accessor 和 toString 等方法大量时间...对于这些方法,Lombok 能够在编译源代码期间自动帮我们生成这些方法,但并不会像反射那样降低程序性能。...:lombok:1.18.10' annotationProcessor 'org.projectlombok:lombok:1.18.10' } Maven Maven 项目的 pom.xml..." /> 2.2 IDE 由于 Lombok 仅在编译阶段生成代码,所以使用 Lombok 注解源代码, IDE 中会被高亮显示错误,针对这个问题可以通过安装 IDE 对应插件来解决...注解 你可以方法或构造函数参数上使用 @NonNull 注解,它将会为你自动生成非空校验语句。

90230

使用javac编译源码过程

填充符号表:主要记录抽象语法树顶级节点。 插入式注解处理器注解处理过程 如果插件注解处理期间对抽象语法树进行了修改,编译期重新进入第一步,直到没有修改为止。...替换:比如将字符串+,替换为StringBuffer或StringBuilderappend方法。 lombok第二步增加getter和setter等方法定义相应树节点。...常用注解 @Data:注解类上;提供类所有属性 getting 和 setting 方法,此外还提供了equals、canEqual、hashCode、toString 方法 @Setter:注解属性上...;为属性提供 setting 方法 @Getter:注解属性上;为属性提供 getting 方法 @Log:注解类上;为类提供一个属性名为log log4日志对象 @Log4j:Creates...;为类提供一个无参构造方法 @AllArgsConstructor:注解类上;为类提供一个全参构造方法 @NonNull:注解参数上,要求非空 例子: import lombok.NonNull

1K30

一份不可多得 Lombok 学习指南

开发环境中使用 Lombok 插件后,Java 开发人员可以节省出重复构建,诸如 hashCode 和 equals 这样方法以及各种业务对象模型 accessor 和 toString 等方法大量时间...对于这些方法,Lombok 能够在编译源代码期间自动帮我们生成这些方法,但并不会像反射那样降低程序性能。 ?...:lombok:1.18.10' annotationProcessor 'org.projectlombok:lombok:1.18.10' } Maven Maven 项目的 pom.xml..." /> 2.2 IDE 由于 Lombok 仅在编译阶段生成代码,所以使用 Lombok 注解源代码, IDE 中会被高亮显示错误,针对这个问题可以通过安装 IDE 对应插件来解决...注解 你可以方法或构造函数参数上使用 @NonNull 注解,它将会为你自动生成非空校验语句。

87911

一份不可多得 Lombok 学习指南

开发环境中使用 Lombok 插件后,Java 开发人员可以节省出重复构建,诸如 hashCode 和 equals 这样方法以及各种业务对象模型 accessor 和 toString 等方法大量时间...对于这些方法,Lombok 能够在编译源代码期间自动帮我们生成这些方法,但并不会像反射那样降低程序性能。...:lombok:1.18.10' annotationProcessor 'org.projectlombok:lombok:1.18.10' } Maven Maven 项目的 pom.xml..." /> 2.2 IDE 由于 Lombok 仅在编译阶段生成代码,所以使用 Lombok 注解源代码, IDE 中会被高亮显示错误,针对这个问题可以通过安装 IDE 对应插件来解决...你可以方法或构造函数参数上使用 @NonNull 注解,它将会为你自动生成非空校验语句。

86210

一些没用小技巧

一、表单验证 controller层接收请求参数,对有些参数我们需要进行校验,比如校验某个字段格式、校验某个字段不能为空等。常规做法是写if判断,当字段校验不通过就抛出异常。...不过使用表单验证,可以让代码更加优雅。...一些其他玩法 lombok最常见用法可能就是@Setter、@Getter和@Data,其实他还有很多强大地方。...@RequiredArgsConstructor(staticName = "xxx")和@NonNull 创建对象时候,可能有某个字段是必传,那么可以将这个字段放到构造方法中,只有传入该字段才能创建对象...类上加上@RequiredArgsConstructor(staticName = "xxx"),xxx表示方法名,然后不能为空字段上加上@NonNull

13311

接口参数注解验证案例

写作缘由 写接口时候经常会有请求体里某字段不为null需求;也有使用一个dto对象,但是插入和修改都想使用这个dto,那这样的话判断条件就不一样,因为修改操作必须有ID,所以参数验证还是挺麻烦...源码下载 ChaiRongD/Demooo - Gitee.com 注意依赖和注解到底是引用哪个包 请求参数验证 请求参数不为null 首先定义一个dto package com.example.springbootparamvalidatedemo.dto...; import lombok.Data; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull...比如经常会有添加和修改某类需求,其实请求里就是一个字段ID是否需要验证,其实这里是可以复用,如果我能告诉系统 这个是插入操作,不需要验证ID,这个是修改操作,必须要验证ID,那就爽歪歪了,不过确实有这种骚操作...,其中注意接口参数前面的注解,这样就能实现根据某个类型判断不同字段 ,亲测可用,不贴结果了 @PostMapping("/insertTeacherHello") public TeacherDto

17010

Java使用Lombok详解

通过开发环境中实现 Lombok,开发人员可以节省构建诸如 hashCode() 和 equals() 、getter / setter 这样方法以及以往用来分类各种 accessor 和 mutator...Lombok 安装 由于 Lombok 仅在编译阶段生成代码,所以使用 Lombok 注解源代码, IDE 中会被高亮显示错误,针对这个问题可以通过安装 IDE 对应插件来解决。...($ex); } } Lombok 使用注意点 谨慎使用 @Builder 类上标注了 @Data 和 @Builder 注解时候,编译时,lombok 优化后 Class 中会没有默认构造方法...反序列化时候,没有默认构造方法就可能会报错。...比如,有多个类有相同部分属性,把它们定义到父类中,恰好 id(数据库主键)也父类中,那么就会存在部分对象比较时,它们并不相等,这是因为:lombok 自动生成 equals(Object other

71710

Gateway如何使用多个源来达成动态路由

Gateway如何使用多个源来达成动态路由一、介绍在前面的文章,我介绍了如何从Nacos读取json文件来动态生成路由随着文件变更,同时刷新路由但在文章结尾,我并不满足于仅仅只Nacos配置动态路由...本篇文章使用了Nacosjson文件,和MySQL数据表,两个配置源来达成动态路由二、代码首先,分析了上篇文章RouteDefinitionRepository.java接口,之前Nacos配置源也是实现了这个接口主要是里面的这个方法...return null; } }).filter(Objects::nonNull...; import lombok.EqualsAndHashCode; import lombok.NoArgsConstructor; import lombok.experimental.Accessors...reactor.core.publisher.Mono; ​ import javax.validation.Valid; import javax.validation.constraints.NotEmpty; import javax.validation.constraints.NotNull

16020

Lombok使用指南

对于这些方法,Lombok 能够在编译源代码期间自动帮我们生成这些方法,但并不会像反射那样降低程序性能。..." /> 2.2 IDE 由于 Lombok 仅在编译阶段生成代码,所以使用 Lombok 注解源代码, IDE 中会被高亮显示错误,针对这个问题可以通过安装 IDE 对应插件来解决...Lombok in IntelliJ IDEA Lombok in Eclipse 三、Lombok详解 注解说明 val:用在局部变量前面,相当于将变量声明为final @NonNull:给方法参数增加这个注解会自动方法内对该参数进行是否为空校验...@NonNull属性作为参数构造函数,如果指定staticName = “of”参数,同时还会生成一个返回类对象静态工厂方法,比使用构造函数方便很多 @Data:注解类上,相当于同时使用了@ToString...你可以方法或构造函数参数上使用 @NonNull 注解,它将会为你自动生成非空校验语句。

98040

今天 1024,为了不 996,Lombok 用起来以及避坑指南

上面已经简单看了一下 @Data 注解,下面看下所有的可以用注解 @NonNull 注解字段和构造器参数上。...@RequiredArgsConstructor 注解类。为类中需要特殊处理字段生成构造方法,比如 final 和被 @NonNull 注解字段。...,但在序列化/反序列化还是需要提供无参 当团队决定不再使用 Lombok 时候,可以使用 Lombok 插件 Delombok 一键去除, Refactor > Delombok 中 再次注意...工作原理 工作原理来自网上资料 Lombok使用过程中,只需要添加相应注解,无需再为此写任何代码。...使用javac过程中,它产生作用具体流程如下: javac对源代码进行分析,生成了一棵抽象语法树(AST) 运行过程中调用实现了“JSR 269 API”Lombok程序 此时Lombok就对第一步骤得到

70330
领券