简介
平时我们在写Java代码时,创建一个dto时需要为对应的私有属性提供get/set方法,这个操作可以使用IDE的快捷键来完成,但是还有更方便的方式,就是lombok。
什么是lombok
Lombok是一个通过注解以达到减少代码的Java库,如通过注解的方式减少get,set方法,构造方法等。
lombok的安装
使用maven添加lombok的依赖:
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.12</version>
</dependency>
复制代码
这时我们已经可以使用lombok的api了,但是要让IDE识别还需要安装插件,Intellij Idea方法: File->settings->Plugins->Browse repositories->Lombok
lombok的使用
常用的注解如下:
- @Data
- @Setter
- @Getter
- @NonNull
- @Synchronized
- @ToString
- @EqualsAndHashCode
- @Cleanup
- @SneakyThrows
@Data
该注解相当于同时加上@Setter @Getter,@ToString,@EqualsAndHashCode的效果
@Data
public class DealQueryDTO implements Serializable{
private static final long serialVersionUID = -2364048890660030036L;
private Long dealId;
private Long dealGroupId;
}
复制代码
使用idea的view->Tool Windows->structure或者alt+F7查看类方法,效果如下:
@Setter,@Getter
顾名思义,就是为属性生成set和get方法。
/**
* author: sunsuwen
* date: 18-01-04
*/
public class Test {
@Getter@Setter
private String name;
}
复制代码
等同于代码:
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
复制代码
@NonNull
判断是否为空,如果为空,则抛出java.lang.NullPointerException
@Synchronized
这个也比较好理解,也就是加同步锁,注解还是标注在方法上,但是是锁代码块,而不是给方法加锁修饰符
@ToString
也就是设置类的toString方法,有几个属性可以设置:
- callSuper 是否输出父类的toString方法,默认为false
- includeFieldNames 是否包含字段名称,默认为true
- exclude 排除生成tostring的字段
@ToString(callSuper = true,exclude ={"phone"})
public class Test {
private String name;
private String phone;
}
复制代码
等价于代码
public String toString() {
return "Test{" +
"name='" + name + '\'' +
'}';
}
复制代码
@Cleanup
确保资源被释放,如IO的连接关闭 使用方式:
public void testCleanUp() {
try {
@Cleanup ByteArrayOutputStream baos = new ByteArrayOutputStream();
baos.write(new byte[] {'Y','e','s'});
System.out.println(baos.toString());
} catch (IOException e) {
e.printStackTrace();
}
}
复制代码
等价于代码:
public void testCleanUp() {
try {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
try {
baos.write(new byte[]{'Y', 'e', 's'});
System.out.println(baos.toString());
} finally {
baos.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
复制代码
总结
如果在项目中还在使用快捷键写get,set方法不妨试试使用lombok带给你的快感