最近在做一个小功能,又不想在原有体态臃肿的项目中追加,为了调试方便并且可以快速开发就采用了springboot。由于使用了JPA,建了几个类,然后通过IDE去生成其属性的构造器、getter、setter、equals、hashcode、toString方法,那么Java中有没有一种方式能够避免这种重复的劳动呢?答案是有,想着前几天听说有一款简化神奇Lombok,特此拿来玩玩记录一下。
Lombok是一个可以通过简单的注解形式来帮助我们简化消除一些必须有但显得很臃肿的Java代码的工具,通过使用对应的注解,可以在编译源码的时候生成对应的方法。 官方地址:https://projectlombok.org/ github地址:https://github.com/rzwitserloot/lombok
下面对Lombok的简单使用方法做一下总结:
实际开发中一般常用到的: @Data @NoArgsConstructor @AllArgsConstructor 这三个,其他的没特殊需求可以自行忽略。
由于开发中我们使用了Maven,直接在pom.xml中引入以下坐标:
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.14</version>
</dependency>
下面是简单Bean示例:
@Data // 生成 getter/setter/equals/canEqual/hashCode/toString
@NoArgsConstructor // 为类提供一个无参的构造方法
@AllArgsConstructor // 为类提供一个全参的构造方法
public class User {
private Integer id;
private String name;
private Integer age;
}
为了对比效果,下面是我们平时生成的Bean:
public class User {
private Integer id;
private String name;
private Integer age;
public User() {
super();
}
public User(Integer id, String name, Integer age) {
super();
this.id = id;
this.name = name;
this.age = age;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
}
可以看到,由于应用了@Data注解和两个构造方法注解,代码变得非常短小易读。当然Lombok也是存在诸多问题的,比如无法支持多种参数构造器的重载,需要安装IDE插件实现get,set效果。
虽然Lombok也用到了注解,但是它并没有用到反射,而是通过一些奇技淫巧,在代码编译时期动态将注解替换为具体的代码。所以JVM实际运行的代码,和我们手动编写的包含了各种工具方法的类相同。
其实,一开始博主以为不需要任何插件支持的,即使项目中引入了坐标,当你get属性的时候也会报错。
官网中其实提供了相关的配置,由于使用的是Eclipse,这里简单的说下Eclipse种的安装步骤。
1.下载lombok.jar包https://projectlombok.org/download.html
2.双击运行(有些系统安装的压缩包的问题可能无法执行)
3.重启Eclipse,然后update一下Maven项目即可。