属性做修改时,也简化了维护为这些属性所生成的getter/setter方法等 缺点: 1. 不支持多种参数构造器的重载 2....、equals、canEqual、hashCode、toString方法,如为final属性, 则不会为该属性生成setter方法。...,Lombok会生成一个非空的声明,可用于校验参数,能帮助避免空指针。...例如:在使用io流时加上该注解就不用在finally里关闭流了 @EqualsAndHashCode 默认情况下,会使用所有非静态(non-static)和非瞬态(non-transient)属性来生成...equals和hasCode,也能通过exclude注解来排除一些属性。
) @Builder(access = AccessLevel.PACKAGE) 从lombok v1.18.8开始是合法的(并将生成具有指定访问级别的构建器类,构建器方法等) 功能 @Builder注解为你的类提供复杂的建造者模式...一个内部静态类,名为FooBuilder,其类型参数与静态方法相同(称为builder) 在构建器中:目标的每个参数有一个private非static 非 final 字段 在builder中:包私有的无参数空构造器...它返回构建器本身,以便可以将setter调用链接起来 在builder中:build()调用该方法的方法,并在每个字段中传递。...仅当您自己未编写任何显式构造函数时,此方法才有效。如果确实有显式构造函数,则将@Builder注释放在构造函数上而不是在类上。...toBuilder();它创建一个新的构建器,该构建器以该实例的所有值开始。
JAVA面向对象编程中的封闭性和安全性。封闭性即对类中的域变量进行封闭操作,即用private来修饰他们,如此一来其他类则不能对该变量访问。...我们可以通过两种方法,第一种即通过public方式的构造器(或称构造函数),对象一实例化就对该变量赋值。...所以当我们创建POJO类时,都会毫不犹豫的让开发工具对域变量生成set,get方法,虽然不是我们自己手动添加,但每个类都要做重复的生成操作,而且当变量名或者是修饰符改变了,我们就要删除set,get方法重新生成...但可以通过在可选的exclude参数中来排除更多字段。或者,通过在parameter参数中命名它们来准确指定希望使用哪些字段。...@NonNull: 注解在属性上;标识属性是不能为空,为空则抛出异常。 @Slf4j :注解在类上;根据用户实际使用的日志框架生成log日志对象。
从编程模型的角度来看,需要考虑以下几点: 应该保留哪个属性(默认为所有声明的属性)?您可以通过使用 注释这些属性来排除属性@Transient。 如何表示数据存储中的属性?...它允许创建新实例,因为 Kotlin 生成copy(…)创建新对象实例的方法,该方法从现有对象复制所有属性值并将作为参数提供的属性值应用到该方法。...Kotlin 为每个类中的每个属性生成属性访问器(getter 和 setter)。...从编程模型的角度来看,需要考虑以下几点: 应该保留哪个属性(默认为所有声明的属性)?您可以通过使用 注释这些属性来排除属性@Transient。 如何表示数据存储中的属性?...您可以覆盖它以告诉转换器在哪里扫描使用@Table注释注释的类。 您可以MappingCassandraConverter通过覆盖该customConversions方法向 中添加其他转换器。
编译时解析与运行时解析 运行时解析,如Spring AOP通过反射获取目标类,但也只有在程序运行时才可以获取到,导致运行时效率低,而且无法在编译阶段获取增强的目标类 编译时解析就是指Lombok这种工作方式...,在编译代码时实现增强类的目的 把注解与Java编译器结合使用的两种方式 编译时解析的两种机制 Annotation Processing Tool(注解处理器) Pluggabke Annotation...Processing API(JSR269插入式注解处理器) 三、Lombok Plugin Install Lombok 插件在 IntelliJ IDEA上安装步骤 https://projectlombok.org...Integer stock = 1000; 再次编译Sku类,查看编译后的class文件 从编译文件可以看出stock属性一开始并没有被赋值,而是在调用的时候才会被赋值,实现类懒加载 @ToString...exclude是指toString方法中排除指定属性 of属性是指定哪些实体类的属性组成toString方法,如果of和exclude同时存在,of的优先级大于exclude callSuper()是指是否调用父类的
它默认使用非静态,非瞬态的属性 可通过参数exclude排除一些属性 可通过参数of指定仅使用哪些属性 它默认仅使用该类中定义的属性且不调用父类的方法 可通过callSuper=true解决上一点问题。...通过官方文档,可以得知,当使用@Data注解时,则有了@EqualsAndHashCode注解,那么就会在此类中存在equals(Object other) 和 hashCode()方法,且不会使用父类的属性...比如,有多个类有相同的部分属性,把它们定义到父类中,恰好id(数据库主键)也在父类中,那么就会存在部分对象在比较时,它们并不相等,却因为lombok自动生成的equals(Object other) 和.../Builder Lombok大家都知道,在使用POJO过程中,它给我们带来了很多便利,省下大量写get、set方法、构造器、equal、toString方法的时间。...这在使用上造成了一定的问题 如何在使用@Builder的模式中,加入字段的默认值。因为使用了建造者模式,那么一般在类内声明字段的时候给字段默认值的方式就是无效的,需要在建造者上动手脚。
比如编写POJO时需要为每个属性提供getter()方法和setter()方法,这就可以使用Lombok实现。...Lombok工具提供更加强大的功能,你在需要什么方法时,只需要添加注解即可。而且提供的方法补全比IDE自带的要多一些。 3.1 @Setter 该注解可以注解类,也可以注解属性。...注解类时会为类中的每个属性默认生成setXxx(Xxx xxx)方法;注解属性时为这个属性生成setXxx(Xxx xxx)方法。...3.2 @Getter 该注解和@Setter类似,可以注解类,也可以注解属性。 注解类时会为类中的每个属性默认生成getXxx()方法;注解属性时为这个属性生成getXxx()方法。...exclude:排除指定字段 callSuper:输出父类属性。注意:父类也要使用该注解或者提供有toString()方法,否则输出的是父类的内存地址。
Lombok对于Java开发者来说应该是比较中意的,Lombok框架提供了很多编码遍历,但是也降低了代码的阅读力。下面我们看看在Idea开发工具中该怎么使用Lombok?...@Setter:注解在属性上;为属性提供 setting 方法 @Getter:注解在属性上;为属性提供 getting 方法 @Log4j :注解在类上;为类提供一个 属性名为log 的 log4j...通过在开发环境中实现Lombok,开发人员可以节省构建诸如hashCode()和equals()这样的方法以及以往用来分类各种accessor和mutator的大量时间。...lombok.jar包到工程,如果使用的是Maven Project,要在pom.xml中添加依赖,并设置Maven为自动导入,参见IntelliJ部分。...,相当于将变量声明为final @NonNull:给方法参数增加这个注解会自动在方法内对该参数进行是否为空的校验,如果为空,则抛出NPE(NullPointerException) @Cleanup:自动管理资源
Lombok之后,将由其来自动帮你实现代码生成,注意,其是 在运行过程中,帮你自动生成的 。...消除模板代码getter、setter、构造器、toString()、equals()便捷的生成比较复杂的代码,例如一个entity要转化成构建器模式的形式,只需要一个注解。.../方法参数上,如果方法内对该参数进行是否为空的校验,如果为null值,则抛出NullPointerException异常 @Cleanup:自动管理资源,用在局部变量之前,在当前变量范围内即将执行完毕退出之前会自动清理资源...:注解在类上,可以自动覆写toString方法,当然还可以加其他参数,例如@ToString(exclude=”id”)排除id属性,或者@ToString(callSuper=true, includeFieldNames...(如果运行中标记为@NoNull的属性为null,会抛出空指针异常) @Data:注解在类上,相当于同时使用了@ToString、@EqualsAndHashCode、@Getter、@Setter和@
让我们一起看看Lombok怎样施展它的魔法以及一些使用示例。 Lombok如何运行的(How Lombok Works) Lombok充当注解处理器,在编译时将代码“添加”到你的类中。...当那些处理器举起手应答时,编译器将控制权连同编译上下文的进程转交给它们进行处理。 对于注解处理器来说,可能最常见的情况是生成新的源文件或执行某种编译时检查。...} 为了简洁起见,这里没有包含所有方法(methods)的具体实现,我仅列出了实际执行所用方法和方法具体实现所用的代码行数量的注释。该样板代码将占该class代码的90%以上!...我会添加一个password属性,但是toString()出于安全原因调用时不希望显示该属性。这是通过排除的参数来实现的@ToString。...Delombok也是一个很好的工具,可以了解Lombok将在做什么。有很简单的方式将其插入到构建过程中。
当主键名为id时(表中列名为id,实体类中字段名为id),无需使用该注解显式指定主键,mp会自动关联。若类的字段名和表的列名不一致,可用 value 属性指定表的列名。...,value为值 该方法的使用场景如下: 只查部分列 当某个表的列特别多,而SELECT的时候只需要选取个别列,查询出的结果也没必要封装成Java实体类对象时(只查部分列时,封装成实体后,实体对象中的很多属性会是...仅展示WHERE条件;展示代码时, 仅展示Wrapper构建部分 // 2....后续使用这个 Wrapper 时,会以实体对象中的非空属性,构建WHERE条件(默认构建 等值匹配 的WHERE条件,这个行为可以通过实体类里各个字段上的 @TableField 注解中的 condition...oracle的序列主键需要使用这种方式 ASSIGN_ID 当没有手动设置主键,即实体类中的主键属性为空时,才会自动填充,使用雪花算法 ASSIGN_UUID 当实体类的主键属性为空时,
当把该注解应用在类上,默认为所有非静态成员变量生成 get 和 set 方法,也可以通过 AccessLevel.NONE 手动禁止生成get或set方法,如下图: @ToString 该注解需应用在类上...,为我们生成 Object 的 toString 方法,而该注解里面的几个属性能更加丰富我们想要的内容, exclude 属性禁止在 toString 方法中使用某字段,而of属性可以指定需要使用的字段...other) 和 hashcode() 方法,包括所有非静态属性和非transient的属性,同样该注解也可以通过 exclude 属性排除某些字段,of 属性指定某些字段,也可以通过 callSuper...属性在重写的方法中使用父类的字段,这样我们可以更灵活的定义bean的比对,如下图: 查看编译后的Employee.class文件,如下图: @NonNull 该注解需应用在方法或构造器的参数上或属性上...无参构造器很好理解,我们主要看看后两种,先看 @RequiredArgsConstructor 从上图中我们可以看出, @RequiredArgsConstructor 注解生成有参数构造器时只会包含有
当把该注解应用在类上,默认为所有非静态成员变量生成 get 和 set 方法,也可以通过 AccessLevel.NONE 手动禁止生成get或set方法,如下图: ?...@ToString 该注解需应用在类上,为我们生成 Object 的 toString 方法,而该注解里面的几个属性能更加丰富我们想要的内容, exclude 属性禁止在 toString 方法中使用某字段...的属性,同样该注解也可以通过 exclude 属性排除某些字段,of 属性指定某些字段,也可以通过 callSuper 属性在重写的方法中使用父类的字段,这样我们可以更灵活的定义bean的比对,如下图:...@NonNull 该注解需应用在方法或构造器的参数上或属性上,用来判断参数的合法性,默认抛出 NullPointerException 异常 ?...从上图中我们可以看出, @RequiredArgsConstructor 注解生成有参数构造器时只会包含有 final 和 @NonNull 标识的 field,同时我们可以指定 staticName
当主键名为id时(表中列名为id,实体类中字段名为id),无需使用该注解显式指定主键,mp会自动关联。若类的字段名和表的列名不一致,可用value属性指定表的列名。...仅展示WHERE条件;展示代码时, 仅展示Wrapper构建部分 // 2....后续使用这个Wrapper时,会以实体对象中的非空属性,构建WHERE条件(默认构建等值匹配的WHERE条件,这个行为可以通过实体类里各个字段上的@TableField注解中的condition属性进行改变...oracle的序列主键需要使用这种方式 ASSIGN_ID 当没有手动设置主键,即实体类中的主键属性为空时,才会自动填充,使用雪花算法 ASSIGN_UUID 当实体类的主键属性为空时,才会自动填充,使用...类型的变量condition,来根据需要灵活拼接WHERE条件(仅当condition为true时会拼接SQL语句) 使用lambda条件构造器,可以通过lambda表达式,直接使用实体类中的属性进行条件构造
> IDEA中安装Lombok插件 依次点击:FIle-Settings-Plugins,从插件栏中搜索Lombok进行安装,安装之后勾选Lombok启动即可。...[image-20201215110700130.png] 注解介绍 @Getter和@Setter 放在类上,为该类的所有属性自动生成Getter和Setter方法 import lombok.Getter...id; String name; int age; } import lombok.EqualsAndHashCode; //把name属性排除在外 @EqualsAndHashCode...答:在Java中有规定:当两个对象相等时,它们的hashcode是一定相等的。但是,当两个对象的hashcode相同,对象不一定相等。这样做是为了防止违反Java规定的情况发生。...特定参数”生成构造器,这里的“特定参数”,特指那些加上final修饰词的属性 import lombok.RequiredArgsConstructor; @RequiredArgsConstructor
Lombok能通过注解的方式,在编译时自动为属性生成构造器、getter/setter、equals、hashcode、toString方法。...2.1 @Data @Data注解在类上,会为类的所有属性自动生成setter/getter、equals、canEqual、hashCode、toString方法,如为final属性,则不会为该属性生成...,Lombok会生成一个非空的声明,可用于校验参数,能帮助避免空指针。...运行时解析 运行时能够解析的注解,必须将@Retention设置为RUNTIME,这样就可以通过反射拿到该注解。...属性做修改时,也简化了维护为这些属性所生成的getter/setter方法等 缺点: 不支持多种参数构造器的重载 虽然省去了手动创建getter/setter方法的麻烦,但大大降低了源代码的可读性和完整性
从上面的说明里我们可以初步认识一下 Lombok,一个作用于编辑器和构建工具的 Java 库,可以对编写的 Java 代码进行增强,比如说不用再写实体类的 getter 方法,equals 方法而是自动生成..., PACKAGE, PRIVATE 2.3 @NonNull 顾名思义,@NonNull 用于标记类中不能允许为 null 的字段或者参数上,任何使用该字段的地方都生成空指针判断代码,若@NonNull...使用属性 @ToString.Exclude排除不需要在 toString 中出现的字段,使用 @ToString.Include标记需要出现在 toString 中的字段,具体用法可参见示例: @Getter...} } } } 2.11 @SneakyThrows @SneakyThrows 主要用于在没有 throws 关键字的情况下,隐蔽地抛出受检查异常,为我们平常开发中需要异常抛出时省去的...当 val 修饰的变量被重新赋值时,编译器就会提示异常:Error: java: 无法为最终变量 X 分配值。
Lombok简介、使用、工作原理、优缺点 Lombok 项目是一个 Java 库,它会自动插入编辑器和构建工具中,Lombok 提供了一组有用的注解,用来消除 Java 类中的大量样板代码。...翻译之后就是: Lombok 项目是一个 Java 库,它会自动插入您的编辑器和构建工具中,简化您的 Java 。...注解在类时为所有字段生成setter方法,注解在字段上时只为该字段生成setter方法,同时可以指定生成的 setter 方法的访问级别 @Getter 使用方法同 @Setter,区别在于生成的是 getter...@Data 注解在类,生成setter/getter、equals、canEqual、hashCode、toString方法,如为final属性,则不会为该属性生成setter方法。...,写着难受,不写还不行,而且在 java 14 已经开始计划支持 record, 也在帮我们从原生方面解决这种模板代码 属性做修改时,也简化了维护为这些属性所生成的getter/setter方法等 缺点
Lombok使用详解 在以往的Java编程中,每当创建一个对象类后,我们都要手动写Getter/Setter、构造器方法、字符串输出的ToString方法和Equals/HashCode方法等,非常繁琐...更方便的是,当新增属性或减少属性时,直接删除属性定义即可,效率是否提升了很多?...作用于属性上,为该属性提供setter方法: public class Demo { private int id; @Setter private String name; } 作用于类上...@Builder @Builder注释为你的类生成相对略微复杂的构建器API。...,提供关于此参数的非空检查,如果参数为空,则抛出空指针异常。
,为所有属性添加set方法、注解在属性上为该属性提供set方法 @Getter:注解在类上,为所有的属性添加get方法、注解在属性上为该属性提供get方法 @NotNull:在参数中使用时,如果调用时传了...如何安装? 1、直接从 http://plugins.jetbrains.com/ 下载,然后放到IDEA 安装文件下面的 plugins,然后重启 IDEA。...代码演示 新建 SpringBoot 项目,不会构建的看这篇文章 使用 IDEA 构建 Spring Boot 工程 ,构建时勾选 web 依赖和 Lombok 依赖,完整 pom 如下: <?...浏览器输出 控制台输出如下: ? 控制台输出 由上面两个输出结果可以看出,LomBok 插件起作用了。...当项目很庞大的时候,往往基础的 Bean 也非常多。建议看到这篇文章的你可以在项目中把 LomBok 用起来。
领取专属 10元无门槛券
手把手带您无忧上云