注:该文是本博主记录学习之用,没有太多详细的讲解,敬请谅解!
在Java项目里,每个JaveBean中我们都需要创建get/set方法,虽然idea中提供了快速构建get/set方法,但是每次增删改属性都需要维护它的get/set方法,特别麻烦。所以今天介绍Lombok插件,使我们平常在开发过程中提高效率,使JavaBean的代码可以至少省一半。
一、什么是Lombok
官网地址:https://www.projectlombok.org/
打开官网,首页上有它的简介,如下:
Project Lombok is a java library that automatically plugs into your editor and build tools, spicing up your java.
Never write another getter or equals method again, with one annotation your class has a fully featured builder, Automate your logging variables, and much more.
翻译:Lombok是一个java库,可以自动插入编辑器并构建工具,为您的java增添色彩。
永远不要再写另一个getter或equals方法,使用一个注释,您的类具有一个功能齐全的构建器,自动化您的日志记录变量等等。
二、如何使用Lombok
1、安装插件和配置依赖
如上图所示,Lombok支持所有主流的 IDE 开发工具及编译构建工具,上图Bulid tool就是集成编译构建工具,IDEs就是各个ide开发工具的插件介绍。
因为本人使用的是Intellij IDEA,所以接下来介绍在IDEA中安装Lombok插件,使编译的时候不会报错。
点击上图的Intellij IDEA,跳转到官网的教程。
下面配上Intellij IDEA安装Lombok插件的教程…,因为我已经安装过Lombok插件,所以图下红色箭头之中的地方显示的是update按钮,如果未安装,这个按钮是绿色Install字样。
下面是 Maven 的依赖配置,在用 Maven 打包的时候也能自动生成需要的代码,在官网上点击
install–>maven。
<dependencies><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.6</version><scope>provided</scope></dependency>
</dependencies>
如果你使用了 Spring Boot,可以不用带版本号,在 Spring Boot spring-boot-dependencies.pom 这个配置文件里面定义了 Lombok 依赖。
所以,你只需要继承版本号即可,当然,有必要的话,你也可以自定义版本号。
<dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><scope>provided</scope>
</dependency>
2、使用注解简化代码
在Lombok的包中我们可以看到所有支持的注解。
1、@Getter和@Setter
添加 @Getter 和 @Setter 注解用在 Java Bean 类上面,无需生成 get/ set 方法,会自动生成所有的 get/ set 方法及一个默认的构造方法。
2、@ToString
使用在类上,默认生成所有非静态字段以下面的格式输出。
public String toString(){return "User(userName=" + getUserName() + ", id=" + getId() + ", age=" + getAge() + ", address=" + getAddress() + ", memo=" + getMemo() + ")";
}
3、@NoArgsConstructor
使用在类上,默认生成一个无参的构造方法。
4、@RequiredArgsConstructor
使用在类上,使用类中所有带有 @NonNull 注解和 final 类型的字段生成对应的构造方法。
5、@AllArgsConstructor
用在类上,生成一个所有参数的构造方法,默认不提供无参构造方法。
6、@Data
用在类上,等同于下面这几个注解合集。
- @Getter
- @Setter
- @RequiredArgsConstructor
- @ToString
- @EqualsAndHashCode
7、@Value
用在类上,等同于下面这几个注解合集。
- @Getter
- @FieldDefaults(makeFinal=true, level=AccessLevel.PRIVATE)
- @AllArgsConstructor
- @ToString
- @EqualsAndHashCode
8、@NonNull
用在属性上,用于字段的非空检查,如果传入到 set 方法中的值为空,则抛出空指针异常,该注解也会生成一个默认的构造方法。
9、@Log4j
用在类上,为类提供一个 属性名为log 的 log4j 日志对像
等同于:private static final org.apache.log4j.Logger log = org.apache.log4j.Logger.getLogger(User.class);
10、@EqualsAndHashCode
用在类上,自动生成equals方法和hashCode方法
11、@Slf4j
@Slf4j跟Log4j一样,为类提供一个 属性名为log 的 Slf4j日志对像
等同于: private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(User.class);
=============================================
以上主要是讲解日常使用频繁的注解,还有更多注解,有兴趣的同学自行学习,谢谢!
附上Lombok api文档地址:https://projectlombok.org/api/overview-summary.html