lombok简介
java开发者无可避免的非技术非业务代码
作为java开发者,实体对象的Getter、Setter方法是无可避免的。假如你的实体对象包含几十甚至上百个(蛋碎…)成员变量,你的代码将会是一片Getter、Setter方法,代码量剧增。现在,有一种方案(或者说小插件)可以让你的实体类只包含成员变量,Getter、Setter方法都可以避免,会开心吗?(哈哈)
java开发者的福音
请容许我在小标题捧了捧lombok: 一个帮助java开发者减少代码量的小工具(公举?)。 你只需要在实体类定义成员变量,之后的Getter、Setter方法就交给lombok吧。
lombok优雅大观
使用lombok前后java实体类的对比
AppDto是最初我们最常见的java实体类,请“观赏”代码:
代码语言:javascript复制package org.byron4j.lombok;
import java.io.Serializable;
/**
* @author Byron.Y.Y 2016年7月7日
* <p>原始java测试实体类</p>
*/
public class AppDto implements Serializable, Cloneable {
private static final long serialVersionUID = -866465084448270352L;
private String requestNo;
private String orgId;
private String address;
private String userType;
private String userId;
private String userLoginName;
private String userName;
private String idCardNo;
private String bankCardNo;
private String phoneNo;
private String bankName;
private String bankCardType;
public String getRequestNo() {
return requestNo;
}
public void setRequestNo(String requestNo) {
this.requestNo = requestNo;
}
public String getOrgId() {
return orgId;
}
public void setOrgId(String orgId) {
this.orgId = orgId;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String getUserType() {
return userType;
}
public void setUserType(String userType) {
this.userType = userType;
}
public String getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId = userId;
}
public String getUserLoginName() {
return userLoginName;
}
public void setUserLoginName(String userLoginName) {
this.userLoginName = userLoginName;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getIdCardNo() {
return idCardNo;
}
public void setIdCardNo(String idCardNo) {
this.idCardNo = idCardNo;
}
public String getBankCardNo() {
return bankCardNo;
}
public void setBankCardNo(String bankCardNo) {
this.bankCardNo = bankCardNo;
}
public String getPhoneNo() {
return phoneNo;
}
public void setPhoneNo(String phoneNo) {
this.phoneNo = phoneNo;
}
public String getBankName() {
return bankName;
}
public void setBankName(String bankName) {
this.bankName = bankName;
}
public String getBankCardType() {
return bankCardType;
}
public void setBankCardType(String bankCardType) {
this.bankCardType = bankCardType;
}
public static long getSerialversionuid() {
return serialVersionUID;
}
}
AppLombokDto 是使用lombok之后的代码,请观赏代码:
代码语言:javascript复制package org.byron4j.lombok;
import java.io.Serializable;
import lombok.Getter;
import lombok.Setter;
/**
* @author Byron.Y.Y 2016年7月7日
* <p>使用lombok时java测试实体类</p>
*/
@Setter
@Getter
public class AppLombokDto implements Serializable, Cloneable {
private static final long serialVersionUID = 9088167527617462824L;
private String requestNo;
private String orgId;
private String address;
private String userType;
private String userId;
private String userLoginName;
private String userName;
private String idCardNo;
private String bankCardNo;
private String phoneNo;
private String bankName;
private String bankCardType;
}
lombok使用入门
1. 直接添加jar包到lib中 在java中项目中使用lombok,可以直接下载lombok.jar包引入到lib中; 2. 使用maven引入 引入依赖:
代码语言:javascript复制 <!-- 增加lombok依赖,用于生成Getter、Setter -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.12.6</version>
</dependency>
引入插件(或者在IDEA中安装lombok插件):
代码语言:javascript复制 <!-- lombok插件 -->
<plugin>
<groupId>org.projectlombok</groupId>
<artifactId>lombok-maven-plugin</artifactId>
<version>1.12.6.0</version>
</plugin>
3. java代码中使用lombok 使用lombok其实是使用其中的注解,常用注解有@Getter、@Setter、@Data、@ToString、@EqualsAndHashCode这几个。下面解释这几个注解的含义:
代码语言:javascript复制@Getter: 生成get方法,是类、成员变量注解。
@Setter: 生成set方法,是类、成员变量注解。
@Data: 生成get、set方法、空构造器、toString方法、equals方法、hashCode方法,是类注解。AppLombokDto 类的注解换成@Data试试。
@ToString: 生成toString方法,是类注解。
@EqualsAndHashCode:生成equals方法、hashCode方法,是类注解。
以下是Getter、Setter针对成员变量的使用方法:
代码语言:javascript复制package org.byron4j.quartz.enums;
import lombok.Getter;
import lombok.Setter;
/**
* 自定义枚举示例
* @company
* @author oyy
* 2016年6月22日
*/
public enum DefinitionEnum {
SUCCESS_TYPE("SUCCESS","成功"),
FAIL_TYPE("FAIL","失败");
private @Getter @Setter String value;
private @Getter @Setter String remark;
private DefinitionEnum(String value, String remark) {
this.value = value;
this.remark = remark;
}
public static void main(String[] args) {
System.out.println(DefinitionEnum.SUCCESS_TYPE.value ":" DefinitionEnum.SUCCESS_TYPE.remark);
}
}
更多lombok的注解,请参考projectlombok,但是无需使用。最有效的最常用的其实就是@Getter、@Setter、@Data注解。