Java中优雅的使用Lombok


1、简介

  Lombok 是一种 Java实用工具,可用来帮助开发人员消除Java的冗长,尤其是对于简单的Java对象(POJO), 它通过注释实现这一目的。一个标准的Java bean 一般具有若干属性,每个属性具有getter()和setter()方法,Lombok中也用到了注解,但是它并没有用到反射,而是通过一些奇技淫巧,在代码编译时期动态将注解替换为具体的代码。所以JVM实际运行的代码,和我们手动编写的包含了各种工具方法的类相同。

  代码越少,意味着出bug的可能性越低。

官网地址:https://projectlombok.org/ 首页有一段几分钟的演示视频,看完就明白是怎么回事了。

2、添加maven依赖

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.16.20</version>
</dependency>

3、Lombok注解

  • @Data:注解在类上,将类提供的所有属性都添加get、set方法,并添加、equals、canEquals、hashCode、toString方法
  • @Setter:注解在类上,为所有属性添加set方法、注解在属性上为该属性提供set方法
  • @Getter:注解在类上,为所有的属性添加get方法、注解在属性上为该属性提供get方法
  • @NotNull:在参数中使用时,如果调用时传了null值,就会抛出空指针异常
  • @Synchronized 用于方法,可以锁定指定的对象,如果不指定,则默认创建一个对象锁定
  • @Log作用于类,创建一个log属性
  • @Builder:使用builder模式创建对象
  • @NoArgsConstructor:创建一个无参构造函数
  • @AllArgsConstructor:创建一个全参构造函数
  • @ToStirng:创建一个toString方法
  • @Accessors(chain = true)使用链式设置属性,set方法返回的是this对象。
  • @RequiredArgsConstructor:创建对象
  • @UtilityClass:工具类
  • @ExtensionMethod:设置父类
  • @FieldDefaults:设置属性的使用范围,如private、public等,也可以设置属性是否被final修饰。
  • @Cleanup: 关闭流、连接点。
  • @EqualsAndHashCode:重写equals和hashcode方法。
  • @toString:创建toString方法。

大概减少了2/3的代码,各种注解的详细用法,请参考:https://projectlombok.org/features/index.html

4、一些使用的例子

 1 public class User {
 2         private String id;
 3         private String name;
 4         private Integer age;
 5     
 6         public String getId() {
 7             return id;
 8         }
 9     
10         public void setId(String id) {
11             this.id = id;
12         }
13     
14         public String getName() {
15             return name;
16         }
17     
18         public void setName(String name) {
19             this.name = name;
20         }
21     
22         public Integer getAge() {
23             return age;
24         }
25     
26         public void setAge(Integer age) {
27             this.age = age;
28         }
29     }
普通的bean
1 @Setter
2 @Getter
3 public class User {
4     private String id;
5     private String name;
6     private Integer age;
7 }
使用Lombok时的bean

相关文章:

  • 2021-07-21
  • 2021-10-19
  • 2022-01-13
  • 2021-05-25
  • 2021-07-27
猜你喜欢
  • 2021-12-04
  • 2022-12-23
  • 2021-05-18
  • 2021-12-17
  • 2021-07-18
  • 2022-01-25
  • 2022-02-15
相关资源
相似解决方案