目录
1. maven仓库手动导入依赖+注解
1.1 maven仓库引入依赖
1.2 在类上使用@Data注解
1.3 在属性上使用@Getter与@Setter注解
2. EditStarters插件+注解
2.1 安装EditStarters插件
2.2 在pom.xml中进行操作
2.3 在java对象类中使用注解
3. lombok工具使用结果查看
3.1 手动package
3.2 查看文件内容
在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.24https://mvnrepository.com/artifact/org.projectlombok/lombok/1.18.24https://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 @Setterprivate String from;@Getter @Setterprivate 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 @Setterprivate String from;@Getter @Setterprivate String to;private String message;private Date CreateTime;
}
可见lombok在编译阶段生成了部分代码;
注:此处虽然处于class目录下,但该文件并不是字节码文件,而是经过idea反编译的;