lombok简化java代码注解的使用

今天在stackoverflow上回答问题的时候发现了几个不得了的注解,是我从来没有见过的。然后呢,为了回答别人的问题,我就去查资料了。。。觉得挺有用的,记录一下。。

一、缘由

stackoverflow上看到了这个问题。 spring boot RestController not work with lombok ,然后就有了这篇博客。。

二、lombok是什么鬼

1. maven引用

1
2
3
4
5
6
<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.16.10</version>
</dependency>

2. 一些api

ombok 注解: lombok 提供的注解不多,可以参考官方视频的讲解和官方文档。 Lombok 注解在线帮助文档:http://projectlombok.org/features/index.html . 下面介绍几个我常用的 lombok 注解: @Data :注解在类上;提供类所有属性的 getting 和 setting 方法,此外还提供了equals、canEqual、hashCode、toString 方法 @Setter:注解在属性上;为属性提供 setting 方法 @Getter:注解在属性上;为属性提供 getting 方法 @Log4j :注解在类上;为类提供一个 属性名为log 的 log4j 日志对象 @NoArgsConstructor:注解在类上;为类提供一个无参的构造方法 @AllArgsConstructor:注解在类上;为类提供一个全参的构造方法

下面是简单示例

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
    
    @Data                   // 生成 getter/setter/equals/canEqual/hashCode/toString
    @NoArgsConstructor      // 为类提供一个无参的构造方法
    @AllArgsConstructor     // 为类提供一个全参的构造方法
    public class Person {
    
     private String id;
     private String name;
     private String identity;
     private Logger log = Logger.getLogger(Person.class);
    }

不使用 lombok 的方案

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
    public class Person {
    
      private String id;
     private String name;
     private String identity;
     private Logger log = Logger.getLogger(Person.class);
    
     public Person() {
    
    }
    
    public Person(String id, String name, String identity) {
        this.id              = id;
        this.name       = name;
        this.identity  = identity;
    }
    
    public String getId() {
        return id;
    }
    
    public String getName() {
        return name;
    }
    
    public String getIdentity() {
        return identity;
    }
    
    public void setId(String id) {
        this.id = id;
    }
    
    public void setName(String name) {
        this.name = name;
    }
    
    public void setIdentity(String identity) {
        this.identity = identity;
    }
    }

二、实践结果

我发现stackoverflow的那个伙计代码写的并没有问题,我把他的代码粘到我本地运行没有一点卡壳。倒不如说他教会了我lombok,在此感谢一下。。嘿嘿

署名 - 非商业性使用 - 禁止演绎 4.0