Lambok插件使用
一、IDE加入依赖与下载插件
1.1 引入依赖
<!-- Lombok依赖 -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.18</version>
<scope>provided</scope>
</dependency>
1.2 下载插件
1.3 官网
1.4 工作小原理
Lombok本质上就是一个实现了“JSR 269 API”的程序。在使用javac的过程中,它产生作用的具体流程如下:
- javac对源代码进行分析,生成了一棵抽象语法树(AST)
- 运行过程中调用实现了“JSR 269 API”的Lombok程序
- 此时Lombok就对第一步骤得到的AST进行处理,找到@Data注解所在类对应的语法树(AST),然后修改该语法树(AST),增加getter和setter方法定义的相应树节点
- javac使用修改后的抽象语法树(AST)生成字节码文件,即给class增加新的节点(代码块)
二、常用注解
- @Data:加在类上,Data注解包含了@Getter、@Setter、@ToString、@EqulasAndHashCode
- @Getter:自动生成get方法
- @Getter(AccessLevel.PROTECTED):生成的get方法的权限是protected,而不是默认的public
- @Setter:自动生成方法
- @Setter(AccessLevel.PROTECTED):生成的set方法的权限是protected,而不是默认的public
- @NoArgsConstructor:无参构造器
- @AllArgsConstructor:全参构造器
- @ToString:重写toString方法,里面包含所有属性
- @ToString(exclude=“column”):排除哪些属性不加入重写的ToString方法中,如果是of=“”,则代表仅包含的关系
- @EqulasAndHashCode:重新Eqauls和HashCode方法
- @EqulasAndHashCode(exclude=“column”):排除哪些因子
- @Slf4j:当项目使用logback日志框架时使用
- @Log4j:当项目使用log4j日志框架时使用
三、Lombok实际使用需注意的点
3.1 Jackson json序列化
在类需要序列化、反序列化时详细控制字段时,考虑实际情况是否使用Lombok
3.2 代码问题
使用lombok虽然能省去手动创建setter和getter方法等繁琐,但是缺降低了源代码文件的可读性和完整性,降低了阅读源代码的舒适度
3.3 @Slf4j和@Log4j
使用哪个注解则看项目使用的日志框架
3.4 选择性使用Lombok
选择适合的地方使用Lombok,例如POJO
3.5 使用反编译
不应该一开始大面积的使用Lombok,应该先使用反编译验证Lombok的可行性
四、使用实例,以实训代码为例子
4.1.1 CarInfo
public class CartInfo {
private Integer cartId;
private Integer cartUser;
private Integer cartPro;
private Integer cartQuantity;
private Integer cartChecked;
public CartInfo(Integer cartId, Integer cartUser, Integer cartPro, Integer cartQuantity, Integer cartChecked) {
this.cartId = cartId;
this.cartUser = cartUser;
this.cartPro = cartPro;
this.cartQuantity = cartQuantity;
this.cartChecked = cartChecked;
}
public CartInfo() {
super();
}
public Integer getCartId() {
return cartId;
}
public void setCartId(Integer cartId) {