在spring项目中创建java对象,如果使用手动生成getter、setter、tostring等方法提供调用接口,会导致代码修改成本与复杂度大大增加;
lombok是一个java工具库,通过添加注解的方式简化了java的开发;
接下来简单介绍lombok的使用方法;
使用lombok有两种方法:
(1)maven仓库手动导入依赖+注解;
(2)editstarters插件+注解;
1. maven仓库手动导入依赖+注解
1.1 maven仓库引入依赖
链接如下:
https://mvnrepository.com/artifact/org.projectlombok/lombok/1.18.24
copy至pom.xml文件中即可:
<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
<dependency>
<groupid>org.projectlombok</groupid>
<artifactid>lombok</artifactid>
<version>1.18.24</version>
<scope>provided</scope>
</dependency>注:勿忘在maven面板中进行刷新:

1.2 在类上使用@data注解
在java类上增加@data注解:
package com.example.demo.controller;
import lombok.data;
import java.util.date;
@data
public class messageinfo {
private string from;
private string to;
private string message;
private date createtime;
}此时在对应的controller中增加相应的获取属性的get方法,即使没有显式编写相关代码,但可见可以成功调用: (.getfrom()方法未标红报错)
package com.example.demo.controller;
import org.springframework.web.bind.annotation.requestmapping;
import org.springframework.web.bind.annotation.restcontroller;
import java.util.list;
@requestmapping("/message")
@restcontroller
public class messagecontroller {
@requestmapping("/publish")
public boolean publishmessage(messageinfo messageinfo){
string from = messageinfo.getfrom();
return false;
}
@requestmapping("/getmessagelist")
public list<messageinfo> getmessagelist(){
return null;
}
}(请忽略该controller的业务逻辑,此处仅用于辅助展示lombok作用)
@data注解就是lombok提供的通过注解自动生成属性的get与set方法,可避免修改接口属性导致需修改其对应的get与set方法造成的麻烦,同时也可以消除冗余代码;
1.3 在属性上使用@getter与@setter注解
@data注解修饰类时,表示提供该类所有属性的get与set方法,这对于某些属性不希望被获取是不够灵活的,故而可以在属性上使用@getter与@setter注解,以实现面向属性生成get与set方法:
package com.example.demo2.controller;
import lombok.getter;
import lombok.setter;
import lombok.tostring;
import java.util.date;
@tostring
public class messageinfo {
@getter @setter
private string from;
@getter @setter
private string to;
private string message;
private date createtime;
}以上代码的含义为:属性from支持获取与写入,to支持获取;
注:附lombok相较于@data更细颗粒度的注解有:
| 注解 | 作用 |
| @getter | 自动添加getter方法 |
| @setter | 自动添加setter方法 |
| @tostring | 自动添加tostring方法 |
| @equalandhashcode | 自动添加equals和hashcode方法 |
| @noargsconstructor | 自动添加无参构造方法 |
| @allargsconstructor | 自动添加全属性构造方法,顺序按照属性的定义顺序 |
| @nonnull | 属性不能为null |
| @requireargsconstructor | 自动添加必须属性的构造方法,final+@null的属性为必须 |
@data = @getter + @setter +@tostring +@ equalandhashcode +@ requireargsconstructor + @ noargsconstructor;
2. editstarters插件+注解
2.1 安装editstarters插件

安装完后重启idea方可生效;
2.2 在pom.xml中进行操作



直接增添lombok标签即可;
注:
- 1、勿忘刷新maven;
- 2、如果url错误,可更换为以下url(选择gitee):


3、使用此方法生成的dependency如下:
<dependency>
<groupid>org.projectlombok</groupid>
<artifactid>lombok</artifactid>
<optional>true</optional>
</dependency>是没有版本标识的;
2.3 在java对象类中使用注解
注解使用方法同第一种方法,详见方法1的2和3步骤;
3. lombok工具使用结果查看
3.1 手动package

3.2 查看文件内容

文件内容如下:
//
// source code recreated from a .class file by intellij idea
// (powered by fernflower decompiler)
//
package com.example.demo2.controller;
import java.util.date;
public class messageinfo {
private string from;
private string to;
private string message;
private date createtime;
public messageinfo() {
}
public string tostring() {
return "messageinfo(from=" + this.getfrom() + ", to=" + this.getto() + ", message=" + this.message + ", createtime=" + this.createtime + ")";
}
public string getfrom() {
return this.from;
}
public void setfrom(string from) {
this.from = from;
}
public string getto() {
return this.to;
}
public void setto(string to) {
this.to = to;
}
}对比原始文件:
package com.example.demo2.controller;
import lombok.getter;
import lombok.setter;
import lombok.tostring;
import java.util.date;
@tostring
public class messageinfo {
@getter @setter
private string from;
@getter @setter
private string to;
private string message;
private date createtime;
}可见lombok在编译阶段生成了部分代码;
注:此处虽然处于class目录下,但该文件并不是字节码文件,而是经过idea反编译的;
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。
发表评论