Lombok项目是一个Java库,它会自动插入您的编辑器和构建工具中,从而为您的Java增光添彩。永远不要再编写另一个getter或equals方法,带有一个注释的类将具有功能全面的生成器,自动执行日志记录变量等等。
下载和设置
首先打开IDEA中设置,找到plugin,搜索lombok,点击install下载并应用,最后记得重启IDEA。或者你也可以官网下载安装https://projectlombok.org/download
添加注解支持 Annotation Processors
在maven仓库搜索下载(https://mvnrepository.com)并添加Lombok依赖到pom.xml
<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.8</version><!--可以不加版本号-->
</dependency>
注解介绍
@Data : 自动生成set/get方法,toString方法,equals方法,hashCode方法,不带参数的构造方法
@NonNull : 让你不在担忧并且爱上NullPointerException
@CleanUp : 自动资源管理:不用再在finally中添加资源的close方法
@Setter/@Getter : 自动生成set和get方法
@ToString : 自动生成toString方法
@EqualsAndHashcode : 从对象的字段中生成hashCode和equals的实现
@NoArgsConstructor/@RequiredArgsConstructor/@AllArgsConstructor
自动生成构造方法
@Value : 用于注解final类
@Builder : 产生复杂的构建器api类,可以让你以下面显示的那样调用你的代码,来初始化你的实例对象
@SneakyThrows : 异常处理(谨慎使用)
@Synchronized : 同步方法安全的转化
@Log : 支持各种logger对象,使用时用对应的注解,如:@Log4
@Data和@Log注解用的较多
未使用Lombok管理时实体类User
public class User {
private Integer id;
private String name;
private String pwd;
private Double score;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
public Double getScore() {
return score;
}
public void setScore(Double score) {
this.score = score;
}
public User() {
}
public User(Integer id, String name, String pwd, Double score) {
this.id = id;
this.name = name;
this.pwd = pwd;
this.score = score;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
User user = (User) o;
return Objects.equals(id, user.id) &&
Objects.equals(name, user.name) &&
Objects.equals(pwd, user.pwd) &&
Objects.equals(score, user.score);
}
@Override
public int hashCode() {
return Objects.hash(id, name, pwd, score);
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", name='" + name + '\'' +
", pwd='" + pwd + '\'' +
", score=" + score +
'}';
}
}
添加@Data后
@Data
public class User {
private Integer id;
private String name;
private String pwd;
private Double score;
}
然后实例化User之后,里面所有方法都可以使用,添加UserController
@RestController
@Log4j2
public class UserController {
//private final Logger logger = LogManager.getLogger(this.getClass());
@GetMapping("/test")
public User testUser() {
User user = new User();
user.setName("zhangsan");
user.setPwd("123");
user.setScore(2.0D);
System.out.println(user.toString());
log.info("info excute");
log.warn("warn excute");
return user;
}
}
在applicaiton.properties中添加日志输出位置
logging.file = logs/spring-boot-test-lombok.log
浏览器输入localhost:8080/test
补充:在User类上添加@Builder
User user = User.builder()
.id(1)
.name("aaa")
.pwd("bbb")
.score("bbb")
.build();
System.out.println(user);
网友评论