赞
踩
Lombok通过注解消除实体类冗长代码
GenerateAllSetter快速生成实体的set方法
以前的Java项目中,充斥着太多不友好的代码: POJO的getter/setter/toString/构造方法;
打印日志; I/O流的关闭操作等等,这些代码既没有技术含量,又影响着代码的美观,Lombok应运而生。
LomBok可以通过注解,帮助开发人员消除JAVA中尤其是POJO类中的冗长代码。
未使用Lombok插件前
使用Lombok插件后
我们只需加一个注解,LomBok即可自动帮我们生成get和set方法
使用Lombok,如果IDEA版本在2020.3以上,不需要安装Lombok插件。如果IDEA版本在2020.3以下,需要安装Lombok插件
打开设置,找到Plugins,直接搜索安装就行
下载lombok.jar 给项目添加依赖
Download (projectlombok.org)https://projectlombok.org/download下载lombok.jar
打开项目结构,把刚刚下的jar包添加依赖到项目中
设置 Enable annotation processing 打上对勾,启用注释处理
接下来编写实体类,会自动使用lombok
在有属性的上边写上注解,lombok会自动为类中的属性提供setter/getter等方法。
在IDEA中,按住Ctrl+7 可以查看Lombok生成的代码。
@Setter、@Getter
作用:为类中的属性提供setter/getter方法。
位置:类上方或属性上方,在属性(即成员变量)上方则为属性(即成员变量)生成setter/getter方法,在类上方表示给该类下的所有属性生成setter/getter方法。
属性:设置setter和getter访问权限。
● static修饰的变量不生成getter和setter方法
● final修饰的变量只生成getter方法
@toString
作用:生成toString方法,默认情况下它会按顺序打印类名称以及每个字段。
位置:类上方
属性:
exclude:取消某一个或多个变量在toString方法中的显示
如果只是在类上方写一个@ToString,那么toString方法是输出所有的成员变量,另外如果用exclude属性的话,要想不输出多个成员变量的话,就像列表那样写
@ToString(exclude = {"password","username"})
@EqualsAndHashCod
在Java中,调用equals()可以判断两个对象是否相等。如果类不重写该方法,则判断两个引用是否指向同一个对象。而实际开发过程中,如果两个对象的属性值(成员的变量的值)都相等,那么就认为这两个对象相等。
如何重写equals():
而在Set中判断对象是否重复,在调用equals()之前,需要先调用hashCode()计算hash值。
所以判断对象相等需要重写equals()、canEqual()、 hashCode()三个方法。
@EqualsAndHashCode
作用:生成equals和hashCode、 canEqual方法。 用于比较两个类对象是否相同。
位置:类上方
属性:
exclude:比较时排除一些属性
of:比较时只使用一些属性
注意:
● 对比时只使用非静态属性
● 默认仅使用该类定义的属性不比较父类定义的属性
@NonNull
作用:用于方法参数前,表示调用该方法时参数不能为null;用于属性上方,表示为该属性
赋值时(注意用于属性上方时是赋值时不能为null,所以初值可以为null)值不能为null。
位置:方法参数前或属性上方。
构造方法相关注解
(1)@NoArgsConstructor
作用:生成无参构造方法
位置:类上方(2)@RequiredArgsConstructor
作用:生成包含final和@NonNull修饰的属性的构造方法final修饰的属性在构造对象的必须赋值,而@NonNull修饰的属性赋值不能为null
位置:类上方
@NoArgsConstructor和@RequiredArgsConstructor无法同时使用
(3)@AllArgsConstructor
作用:生成全参的构造方法
位置:类上方
@Data
作用:相当于同时添加@Setter. @Getter. @ToString、 @EqualsAndHashCode.
@RequiredArgsConstructor五个注解
位置:类上方
@Builder
作用:提供链式风格创建对象
位置:类上方
@Log
作用:在类中生成日志对象,在方法中可以直接使用
位置:类上方
注:针对不同的日志实现产品,有不同的日志注解,使用@Log表示使用Java自带的日志功能,除了@Log,还可以使用@Log4j、@Log4j2、 @SIf4j 等注解,来使用不同的日志产品。
@Cleanup
作用:自动关闭资源,如I0流对象。
位置:代码前方
@SneakyThrows
作用:对方法中异常进行捕捉并抛出
位置:方法上方
在平时开发的过程中,难免有一些实体bean相互转换的过程,如果实体类属性字段少的话还好,我们可以手动敲一遍,比如user.setName(u.getName()),但是当实体bean的字段达到10个以上时,这样手动敲难免会降低开发效率,这时候就得GenerateAllSetter出场了,GenerateAllSetter可以快速生成实体的set方法,大大减少开发的时间。
打开idea的设置窗口,找到Plugins,搜索generateallsetter,如图所示,我这里已经安装过了,没有安装的点击install按钮安装即可,安装完成之后会提示重启idea
安装并重启idea之后即可使用快捷键来快速生成代码,快捷键为alt+enter(回车键),也可以到idea里面去手动更改快捷键,可以看到已经自动生成了一系列的set方法,并且两个实体bean相同的属性会自动设置上
直接点击就可以生成,省去我们了不少时间
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。