在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反编译的;
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。
发表评论