背景 新上线了一个需求后,发现时不时的有一些NullPointerException报出来,跟踪后发现都是在一个地方报出来的 org.springframework.beans.BeanInstantiationException...public BookInfoReqDto(@NonNull Long bookId){ if(bookId == null){ throw new NullPointerException...("bookId"); }else { this.bookId = bookId; } } 原来是有人用错注解了 @NonNull使用错注解了,应该用@NotNull...,注意二者所源自的包是不同的。...import lombok.NonNull; import javax.validation.constraints.NotNull;
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包括在内。
@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
对于这些方法,它能够在编译源代码期间自动帮我们生产这些方法,并没有如反射那样降低程序的性能。本文将带大家详细介绍关于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
自定义验证 很多时候框架提供的功能并不能满足我们的业务场景,这时我们需要自定义一些验证规则来完成验证。...调用过程验证 有的时候我们在参数传输过程中需要对传入的对象做参数验证,但是上面介绍的都是对参数绑定时的验证,那能不能使用validation进行验证呢? 答案肯定是可以的。...5.1 使用 spring bean 5.1.1 注入validator bean validator 是我们在config文件中定义的bean,如果使用了springboot默认的配置ValidationAutoConfiguration...统一异常处理 在上面的参数验证中,验证的错误信息是通过BindingResult result参数进行接收的,在每个方法中异常处理如出一辙,特别麻烦。...甚至在step 5,6都是直接将异常的堆栈信息返回给前端,这对于用来说是非常不友好的。而且有的情况下需要我们主动抛出业务异常,比方用户不能直接删除已绑定用户的角色。 所以,开撸。
在开发环境中使用 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 注解,它将会为你自动生成非空校验语句。
hibernate-validator 5.3.5.Final 2、在入参请求类中添加限制注解...import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import org.hibernate.validator.constraints.Length...org.hibernate.validator.constraints.NotBlank; import org.hibernate.validator.constraints.Range; import javax.validation.constraints.NotNull...1、官方的验证注解 验证注解 说明 @Null 只能为null @NotNull 不能为null @NotEmpty 不为null、不能为空字符串(字符串长度不为0、集合大小不为0) @NotBlank...(value) 必须符合指定的正则表达式 @Length(max,min) 字符长度必须在min到max之间 @Email 验证注解的元素值是Email 2、自定义验证注解 1)定义注解 import
填充符号表:主要记录抽象语法树的顶级节点。 插入式注解处理器的注解处理过程 如果插件在注解处理期间对抽象语法树进行了修改,编译期重新进入第一步,直到没有修改为止。...替换:比如将字符串的+,替换为StringBuffer或StringBuilder的append方法。 lombok在第二步增加getter和setter等方法定义的相应树节点。...常用注解 @Data:注解在类上;提供类所有属性的 getting 和 setting 方法,此外还提供了equals、canEqual、hashCode、toString 方法 @Setter:注解在属性上...;为属性提供 setting 方法 @Getter:注解在属性上;为属性提供 getting 方法 @Log:注解在类上;为类提供一个属性名为log 的 log4日志对象 @Log4j:Creates...;为类提供一个无参的构造方法 @AllArgsConstructor:注解在类上;为类提供一个全参的构造方法 @NonNull:注解在参数上,要求非空 例子: import lombok.NonNull
---- Eclipse安装Lombok插件: 1.安装该插件时最好关闭Eclipse,然后在官网中下载lombok.jar,下载地址 2.将 lombok.jar 放在eclipse安装目录下,和 eclipse.ini...这里所介绍到的 Java Decompiler 就是用来帮助我们在使用Lombok遇到问题时,去验证编译后的.class文件的。...---- 使用Lombok时需要注意的点 在类需要序列化、反序列化时或者需要详细控制字段时,应该谨慎考虑是否要使用Lombok,因为在这种情况下容易出问题。...,在使用Lombok之前,这个类里是写了getter setter方法以及构造函数的。...lombok.Getter; import lombok.NonNull; import lombok.RequiredArgsConstructor; import lombok.Setter;
在开发环境中使用 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 注解,它将会为你自动生成非空校验语句。
在开发环境中使用 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 注解,它将会为你自动生成非空校验语句。
对,就是lombok。 lombok lombok 提供了简单的注解的形式来帮助我们简化消除一些必须有但显得很臃肿的 java 代码。...@NonNull: 注解在属性上;标识属性是不能为空,为空则抛出异常。 @Slf4j :注解在类上;根据用户实际使用的日志框架生成log日志对象。...对于具有约束的字段(例如@NonNull字段),不会生成检查或分配,因此请注意,正确初始化这些字段之前,这些约束无效。...,或者是以@NonNull注解的未经初始化的字段@RequiredArgsConstructor(staticName = "of")会生成一个of()的静态方法,并把构造方法设置为私有的。...切到sts的安装目录,验证一下STS.ini文件: ?
; import javax.validation.constraints.Email; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull...; /** * @author CBeann * @create 2020-01-11 16:01 */ @Data//lombok注解 public class Student {...需求 验证sex性别参数是否合法,添加自己定义的校验注解进行校验 实践 自定义的属性注解 package com.example.springbootvalidator.myvalidator; import...; /** * @author CBeann * @create 2020-01-11 20:31 */ @Data//lombok注解 public class Person {..._king_qc的博客-CSDN博客
一、表单验证 controller层接收请求参数,对有些参数我们需要进行校验,比如校验某个字段的格式、校验某个字段不能为空等。常规做法是写if判断,当字段校验不通过就抛出异常。...不过使用表单验证,可以让代码更加优雅。...的一些其他玩法 lombok最常见的用法可能就是@Setter、@Getter和@Data,其实他还有很多强大的地方。...@RequiredArgsConstructor(staticName = "xxx")和@NonNull 在创建对象的时候,可能有某个字段是必传的,那么可以将这个字段放到构造方法中,只有传入该字段才能创建对象...在类上加上@RequiredArgsConstructor(staticName = "xxx"),xxx表示方法名,然后在不能为空的字段上加上@NonNull。
通过在开发环境中实现 Lombok,开发人员可以节省构建诸如 hashCode() 和 equals() 、getter / setter 这样的方法以及以往用来分类各种 accessor 和 mutator...Lombok 安装 由于 Lombok 仅在编译阶段生成代码,所以使用 Lombok 注解的源代码,在 IDE 中会被高亮显示错误,针对这个问题可以通过安装 IDE 对应的插件来解决。...($ex); } } Lombok 使用注意点 谨慎使用 @Builder 在类上标注了 @Data 和 @Builder 注解的时候,编译时,lombok 优化后的 Class 中会没有默认的构造方法...在反序列化的时候,没有默认构造方法就可能会报错。...比如,有多个类有相同的部分属性,把它们定义到父类中,恰好 id(数据库主键)也在父类中,那么就会存在部分对象在比较时,它们并不相等,这是因为:lombok 自动生成的 equals(Object other
Gateway如何使用多个源来达成动态路由一、介绍在前面的文章,我介绍了如何从Nacos读取json文件来动态生成路由随着文件的变更,同时刷新路由但在文章的结尾,我并不满足于仅仅只在Nacos配置动态路由...本篇文章使用了Nacos的json文件,和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
写作缘由 写接口的时候经常会有请求体里某字段不为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
Lombok 简介 Lombok 是一种 Java 实用工具,可用来帮助开发人员消除 Java 的冗长,尤其是对于简单的 Java 对象(POJO)。它通过注释实现这一目的。...通过在开发环境中实现 Lombok,开发人员可以节省构建诸如 hashCode() 和 equals() 、getter / setter 这样的方法以及以往用来分类各种 accessor 和 mutator...的大量时间。...>lombok 1.16.8 Lombok 使用 API Lombok 提供注解API 来修饰指定的类:...@NonNull Lombok 代码: @Getter @Setter @NonNull private List members; 等价于 Java 源码: @NonNull private
对于这些方法,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 注解,它将会为你自动生成非空校验语句。
上面已经简单看了一下 @Data 注解,下面看下所有的可以用的注解 @NonNull 注解在字段和构造器的参数上。...@RequiredArgsConstructor 注解在类。为类中需要特殊处理的字段生成构造方法,比如 final 和被 @NonNull 注解的字段。...,但在序列化/反序列化的还是需要提供无参的 当团队决定不再使用 Lombok 的时候,可以使用 Lombok 插件的 Delombok 一键去除,在 Refactor > Delombok 中 再次注意...工作原理 工作原理来自网上资料 在Lombok使用的过程中,只需要添加相应的注解,无需再为此写任何代码。...在使用javac的过程中,它产生作用的具体流程如下: javac对源代码进行分析,生成了一棵抽象语法树(AST) 运行过程中调用实现了“JSR 269 API”的Lombok程序 此时Lombok就对第一步骤得到的
领取专属 10元无门槛券
手把手带您无忧上云