背景
Lombok是一个Java库,它通过注解减少了大量常规代码,例如getter和setter方法,equals,hashCode,toString等方法。使用Lombok可以减少模板代码的编写,使代码更简洁,更易于阅读和维护。
常用注解介绍
- @Setter 注解在类或字段,注解在类时为所有字段生成setter方法,注解在字段上时只为该字段生成setter方法。
- @Getter 使用方法同上,区别在于生成的是getter方法。
- @ToString 注解在类,添加toString方法。
- @EqualsAndHashCode 注解在类,生成hashCode和equals方法。
- @NoArgsConstructor 注解在类,生成无参的构造方法。
- @RequiredArgsConstructor 注解在类,为类中需要特殊处理的字段生成构造方法,比如final和被@NonNull注解的字段。
- @AllArgsConstructor 注解在类,生成包含类中所有字段的构造方法。
- @Data 注解在类,生成setter/getter、equals、canEqual、hashCode、toString方法,如为final属性,则不会为该属性生成setter方法。
- @Slf4j 注解在类,生成log变量,严格意义来说是常量。private static final Logger log = LoggerFactory.getLogger(UserController.class);
举例:@Setter、@Getter
<dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><scope>provided</scope>
</dependency>
<scope>provided</scope>
表示该依赖在运行时不需要包含在项目构建中,而是由JDK或者应用服务器提供。换句话说,这个依赖项在编译时需要,但在运行时不需要。
不使用 Lombok
package com.zhangyu.model;public class User {private Integer id;private String name;private String email;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 getEmail() {return email;}public void setEmail(String email) {this.email = email;}
}
使用 Lombok
package com.zhangyu.model;import lombok.Getter;
import lombok.Setter;@Getter
@Setter
public class User {private Integer id;private String name;private String email;
}