IDEA如何使用Lombok插件
你是否还在为写getter/setter/toString/Constructor而烦恼呢,现在不用再为此烦恼了,因为我们有了Lombok!
什么是Lombok?
Lombok 是一种 Java™ 实用工具,可用来帮助开发人员消除 Java 的冗长,尤其是对于简单的 Java 对象(POJO)。它通过注解实现这一目的。
让我们来看这样一个例子:
public class Dept implements Serializable {
private Long deptno;
private String dname;
private String db_source;
}
要使用这个对象,必须还要写一些getter和setter方法,可能还要写一个构造器、equals方法、或者hash方法.这些方法很冗长而且没有技术含量,我们叫它样板式代码。
lombok的主要作用是通过一些注解,消除样板式代码,像这样:
@Data // get/set等
public class Dept implements Serializable {
private Long deptno;
private String dname;
private String db_source;
}
这个时候我们通过查看IDEA中的Structre我们会发现他多了这些东西:
我们可以看到这里多了getter/setter/toString/equals/hashCode等方法。
当然有人觉得@Data这个注解粒度太粗,Lombok也给我们提供了更细粒度的注解,比如:@getter,@Setter,(这两个是field注解)@toString(这个是类注解)等一系列的注解。
如何使用Lombok?
Lombok的使用其实是非常简单的,首先我们需要引入相应的maven包:
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.18</version>
<scope>provided</scope>
</dependency>
Lombok的scope=provided,说明它只在编译阶段生效,不需要打入包中。事实正是如此,Lombok在编译期将带Lombok注解的Java文件正确编译为完整的Class文件。
其次我们需要在IDEA中下载Lombok的插件:
Alt+Ctrl+S打开设置
这里我们可以看到它其实是有非常多的注解来让我们使用的,各位看官有兴趣可以一个个试一下。
来简单测试一下吧!
@Data // get/set等
@NoArgsConstructor // 无参构造函数
@AllArgsConstructor // 全参构造函数
@Accessors(chain = true) // 链式访问
public class Dept implements Serializable {
private Long deptno;
private String dname;
private String db_source;
public static void main(String[] args) {
Dept dept = new Dept();
dept.setDeptno(11L).setDname("研发部").setDb_source("DB01");
}
}
可以看到我这里new了一个无参的对象,并且我可以调用set方法,为什么呢,答案都在Lombok。
好了Lombok的简单介绍到此就结束了。
我又回来了,哈哈,上面的链式访问可能有人不懂,我们来进行一下简单的说明:
如果我们没有加@Accessors(chain = true)这个注解,那么我们是不可能有这一段代码的:
dept.setDeptno(11L).setDname("研发部").setDb_source("DB01");
那我们的代码会是什么样的,既然你诚心诚意的问了……
咳咳,不好意思没忍住,如果没有@Accessors 这个注解我们的代码是这样的:
@Data // get/set等
@NoArgsConstructor // 无参构造函数
@AllArgsConstructor // 全参构造函数
@Accessors(chain = true) // 链式访问
public class Dept implements Serializable {
private Long deptno;
private String dname;
private String db_source;
public static void main(String[] args) {
Dept dept = new Dept();
//dept.setDeptno(11L).setDname("研发部").setDb_source("DB01");
dept.setDeptno(11L);
dept.setDname("研发部");
dept.setDb_source("DB01");
}
}
随便提一下@Accessors(chain = true) chain默认为false哦,所以如果想使用链式访问,我们就需要设置它为true。
好了,各位看官,Lombok的简单使用到这里就真的结束了,咱们有缘再会。