发布时间:2023-12-09 08:00
Project Lombok is a java library that automatically plugs into your editor and build tools, spicing up your java.Never write another getter or equals method again, with one annotation your class has a fully featured builder, Automate your logging variables, and much more.
lombok是一个可以通过简单的注解的形式来帮助我们简化消除一些必须有但显得很臃肿的 Java 代码的工具,简单来说,比如我们新建了一个实体类,然后在其中写了几个字段,然后通常情况下我们需要手动去建立getter和setter方法以及构造方法等,lombok的作用就是为了省去我们手动创建这些代码的麻烦,它能够在我们编译源码的时候自动帮我们生成这些方法,这样的代码就显得简洁干净。
简言之,Lombok能以简单的注解形式来简化java代码,提高开发人员的开发效率。
<dependency>
<groupId>org.projectlombokgroupId>
<artifactId>lombokartifactId>
<version>1.16.10version>
dependency>
使用Lombok还需要插件的配合,打开idea的设置,点击Plugins,点击Browse repositories,在弹出的窗口中搜索lombok,然后安装即可。
编译时出错,可能是没有enable注解处理器。Annotation Processors > Enable annotation processing
。设置完成之后程序正常运行。
下面举两个栗子,看看使用lombok和不使用的区别。
创建一个用户类
不使用Lombok
public class User implements Serializable {
private static final long serialVersionUID = -8054600833969507380L;
private Integer id;
private String username;
private Integer age;
public User() {
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", username='" + username + '\'' +
", age=" + age +
'}';
}
@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (o == null || getClass() != o.getClass()) {
return false;
}
User user = (User) o;
return Objects.equals(id, user.id) &&
Objects.equals(username, user.username) &&
Objects.equals(age, user.age);
}
@Override
public int hashCode() {
return Objects.hash(id, username, age);
}
}
使用Lombok
@Data
public class User implements Serializable {
private static final long serialVersionUID = -8054600833969507380L;
private Integer id;
private String username;
private Integer age;
}
编译源文件,然后反编译class文件,反编译结果如下图。说明@Data注解在类上,会为类的所有属性自动生成setter/getter、equals、canEqual、hashCode、toString方法,如为final属性,则不会为该属性生成setter方法。
Lombook在使用中主要靠注解起作用,下面是常用的一些注解及其作用:下面介绍一下常用的几个注解:
插件:maven命令执行时,真正完成功能的是插件,插件就是一些jar文件, 一些类。
第一步:加入依赖,在pom.xml加入单元测试依赖
<dependency>
<groupId>junitgroupId>
<artifactId>junitartifactId>
<version>4.11version>
<scope>testscope>
dependency>
第二步:在maven项目中的src/test/java目录下,创建测试程序。
推荐的创建类和方法的提示:
例如你要测试HelloMaven
创建测试类 TestHelloMaven
@Test
public void testAdd(){
测试HelloMaven的add方法是否正确
}
其中testAdd叫做测试方法,它的定义规则
第三步:mvn compile
编译main/java/目录下的java 为class文件, 同时把class拷贝到 target/classes目录下面。
d方法是否正确
}
其中testAdd叫做测试方法,它的定义规则
1. 方法是public的,必须的
2. 方法没有返回值, 必须的
3. 方法名称是自定义的,推荐是Test + 方法名称
4. 在方法的上面加入 @Test
**第三步**:mvn compile
编译main/java/目录下的java 为class文件, 同时把class拷贝到 target/classes目录下面。
把main/resources目录下的所有文件 都拷贝到target/classes目录下