一、lombok的介绍
lombok是开源的代码生成库,是一款非常实用的小工具,我们在编辑实体类时可以通过lombok注解减少getter、setter等方法的编写,在更改实体类时只需要修改属性即可,减少了很多重复代码的编写工作。
此插件需要下载、安装、配置,使用起来虽然方便但是需要记住几个常用注解,下面会介绍。
二、lombox的安装
因为本人用的是idea,所以在此只演示在idea上面的安装。
idea其实是自带lombox插件的,可以联网进行下载,注意网络一定要好。不然会下载失败切记。
1.1 打开File–>Settings,或者使用快捷键Ctrl+Alt+S进入设置页面。左侧选择Plugins(插件),右侧点击Browse repositories…,
1.2 进入插件安装页面。。。。
1.3 此时,网络好的话可以顺利下载,不好的话,需要反复操作,或是开流量吧。。。
1.4 你以为到这里就完成了吗?高兴的太早了,他还有一个非常重要的步骤。就是。。。启用注释处理,这步不做的话,lombox还是不能用,你说气人不。具体为什么要这样做,我也不太记得了,如果哪位大神知道,还请留言告知。说是放开编译权限之类的。。。
三、lombox的依赖配置
因为我用的是gradle,所以在build.gradle文件中添加依赖。
dependencies {
implementation('org.springframework.boot:spring-boot-starter-web')
implementation('org.mybatis.spring.boot:mybatis-spring-boot-starter:1.3.2')
runtimeOnly('mysql:mysql-connector-java')
testImplementation('org.springframework.boot:spring-boot-starter-test')
//orika 依赖
compile('ma.glasnost.orika:orika-core:1.5.1')
//lombox依赖
compile('org.projectlombok:lombok:1.16.16')
}
四、lombox的使用
二话不说上代码更清晰。。。。。
用lombox之前,每次get、set方法都要很多行,虽然也有快捷键生成,但是代码看起来也不是很清爽。
public class UserA {
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
但是有了lombox之后。。。。。只需要一个@Data注释,就问你给力不?
@Data
public class UserA {
private String name;
private int age;
}
虽然看不到,但是lombox已经帮我们生成了。。。
五、lombox注释的使用(这些都是摘抄的,因为大同小异)
- @Data:注解在类上,将类提供的所有属性都添加get、set方法,并添加、equals、canEquals、hashCode、toString方法
- @Setter:注解在类上,为所有属性添加set方法、注解在属性上为该属性提供set方法
- @Getter:注解在类上,为所有的属性添加get方法、注解在属性上为该属性提供get方法
- @NotNull:在参数中使用时,如果调用时传了null值,就会抛出空指针异常
- @Synchronized 用于方法,可以锁定指定的对象,如果不指定,则默认创建一个对象锁定
- @Log作用于类,创建一个log属性
- @Builder:使用builder模式创建对象
- @NoArgsConstructor:创建一个无参构造函数
- @AllArgsConstructor:创建一个全参构造函数
- @ToStirng:创建一个toString方法
- @Accessors(chain = true)使用链式设置属性,set方法返回的是this对象。
- @RequiredArgsConstructor:创建对象
- @UtilityClass:工具类
- @ExtensionMethod:设置父类
- @FieldDefaults:设置属性的使用范围,如private、public等,也可以设置属性是否被final修饰。
- @Cleanup: 关闭流、连接点。
- @EqualsAndHashCode:重写equals和hashcode方法。
- @toString:创建toString方法。