lombok
背景:在java中有属性这么一说,写一个成员变量,再给它定义上get跟set方法,它就成为了一个属性,比较简单。在一个java豆中随处可见这样的属性,以及在web开发中如果要将对象交给spring的IOC容器去管理也要给这个对象赋上相应的set方法,甚至在struts2中接收前端传过来的参数也得定义这样的属性,还有等等等等。这么多的get跟set方法放到代码中总觉得碍眼,那么能不能在写的时候不给这些成员变量定义set跟get方法,等到编译的时候再去加上呢?自然是可能的!
实现这个功能的工具叫做lombok,它可以帮我们自动的添加get跟set方法,其实不止如此,它甚至还能帮我们自动的重写toSting()方法以及等等等等。
那么究竟怎样使用呢?
首先需要安装,根据IDE的不同,有不同的安装方法。java的IDE大概分为两个,eclipse(myeclipse)跟IDEA。下面针对这两个IDE分别介绍安装lombok的方法
IDEA
在IDEA上安装非常的简单,打开IDEA的设置,搜索plugin,然后在右边搜索lombok安装就行
安装的过程比较快,等一会就可以了
eclipse
在eclipse上安装稍微复杂一点。。。
首先需要下载lombok的jar包:https://projectlombok.org/download
然后将lombok.jar移到eclipse的安装目录
最后在eclipse.ini文件最后加入下面两行代码,eclipse.ini在lombok.jar同级的目录下
-Xbootclasspath/a:lombok.jar -javaagent:lombok.jar
做完后重启eclipse即可
使用
装好后就可以使用了,首先导入lombok相关的Maven依赖
<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.16.12</version> <scope>provided</scope> </dependency>
然后就可以在写代码的时候放飞自我了。。。
只需要在想要使用的类上加上@Data注解即可免去写get、set跟toString方法了
当然,如果只希望不写get方法,可以只使用@Getter注解,同样如果只希望不写set方法,使用@Setter,也可以使用@ToString注解不写toString方法
下面对比一下使用lombok与不使用lombok:

import java.math.BigDecimal; public class ProductInfo { private String productId; private String productName; private BigDecimal productPrice; private Integer productStock; private String productDescription; private String productIcon; private Integer productStatus; private Integer categoryType; public String getProductId() { return productId; } public void setProductId(String productId) { this.productId = productId; } public String getProductName() { return productName; } public void setProductName(String productName) { this.productName = productName; } public BigDecimal getProductPrice() { return productPrice; } public void setProductPrice(BigDecimal productPrice) { this.productPrice = productPrice; } public Integer getProductStock() { return productStock; } public void setProductStock(Integer productStock) { this.productStock = productStock; } public String getProductDescription() { return productDescription; } public void setProductDescription(String productDescription) { this.productDescription = productDescription; } public String getProductIcon() { return productIcon; } public void setProductIcon(String productIcon) { this.productIcon = productIcon; } public Integer getProductStatus() { return productStatus; } public void setProductStatus(Integer productStatus) { this.productStatus = productStatus; } public Integer getCategoryType() { return categoryType; } public void setCategoryType(Integer categoryType) { this.categoryType = categoryType; } @Override public String toString() { return "ProductInfo{" + "productId='" + productId + '\'' + ", productName='" + productName + '\'' + ", productPrice=" + productPrice + ", productStock=" + productStock + ", productDescription='" + productDescription + '\'' + ", productIcon='" + productIcon + '\'' + ", productStatus=" + productStatus + ", categoryType=" + categoryType + '}'; } }

import lombok.Data; import java.math.BigDecimal; @Data public class ProductInfo { private String productId; private String productName; private BigDecimal productPrice; private Integer productStock; private String productDescription; private String productIcon; private Integer productStatus; private Integer categoryType; }
哈哈哈,我是魔鬼吗。。。