在日常开发中,我们经常要对一个实体类的属性增加 get、set 的方法,不仅占用篇幅长,而且显得代码冗余,也是重复造轮子的例子。
我们经常看到别人的项目只需要增加一个 @Data 就省去了属性的 get、set 方法,怎么做到的呢?
其实就是增加 lombok 依赖和 IDEA 安装插件。
步骤1、pom.xml 增加 lombok 的依赖
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
maven 会自动帮我们把最新的 lombok 依赖导入,如图:
我们在一个实体类上增加 @Data 注解,就不需要显示的写出生成 get、set 方法了
package com.study.entity;
import lombok.*;
/**
* @author biandan
* @description
* @signature 让天下没有难写的代码
* @create 2021-06-06 下午 5:45
*/
@Data
public class UserEntity {
private Integer id;
private String userName;
private String password;
private String desc;
}
不过在使用实体类的时候,还是有点不顺(红色波浪线,看起来像报错的样子。但是它能编译通过,而且能运行。):
运行测试:
步骤2、IDEA 安装 Lombok 插件
在 IDEA 上找到 File -》Settings -》Plugins,在搜索框输入 lombok
如果我们 IDEA 没安装 lombok 插件,点击【Search in repositories】去插件市场寻找。
找到 Lombok 插件,这个被下载了一千多万的插件,右边点击安装 install。安装完毕后,点击重启 IDEA 即可。
效果图。不报红色了,而且对着方法按住 Ctrl + 鼠标左键 还能跳到属性值上,靠谱,好使!
OK,就是2个步骤。
此外,还有几个常用的注解,我们有必要了解一下。
@Data
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@Builder
@Getter,顾名思义就是为实体属性增加 get 方法。@Setter,就是给属性增加 set 方法。@Getter + @Setter = @Data
当然,我们还可以限制属性的 set 属性在哪些包中可以用,比如限制在相同的包下可以使用:@Setter(AccessLevel.PACKAGE)
效果,如果不在相同的包下使用,并且还使用了 setXXX 的方式注入属性,则报错。编译不通过。这个在 DDD 思想中,有很重要的作用:在业务层的实体属性不允许使用 set 方法给属性注入值,避免数据被篡改。
编译不通过效果图:
再说其它几个注解:
@NoArgsConstructor 是无参构造函数,如果是 @NoArgsConstructor(access = AccessLevel.PACKAGE) 说明只有在相同的包下,才能使用无参构造函数,否则报错。
@AllArgsConstructor 是全部参数的构造函数,如果是 @AllArgsConstructor(staticName = "of") 说明要想构造一个全部参数的实体,必须按照参数的定义顺序依次填写属性,当然,of 也可以改为其它单词,一般行业都喜欢用 of。如图:
UserEntity u = UserEntity.of(1,"名字","123","描述");
@Builder 是也是构造器的意思,不过比 of 的构造器灵活,你可以根据需要来构造属性值,不一定把属性全部构造,我们在使用老外封装的接口,经常可以把很多属性使用 . 来赋值,就是这个原理,如:
UserEntity e = UserEntity.builder()
.id(11)
.userName("流放")
.password("abc")
.build();
OK,lombok 的插件讲解到这,老铁,帮助到你了吗?