今天在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,在此感谢一下。。嘿嘿