Lombok常用注解
Lombok通过注解的方式省掉大量代码的编写,尤其对于POJO类的set()、get()、toString()等。在源代码只需要加上相应的注解,编译过程中Lombok插件就会自行生辰相关代码。减少冗杂且重复的代码,简化开发易于修改。本文即为对Lombok常见注解的介绍及对生成的代码的展示。
安装Lombok
在菜单栏依次选择File
->Settings
->Plugins
,输入Lombok
搜索该插件,得到搜索结果选择Lombok进行安装即可。安装完毕提示重启即安装成功。
Maven项目中引入Lombok依赖的编译支持,在pom文件中的dependences
里添加即可
1 | <dependency> |
常用注解
- @Data
- @Setter
- @Getter
- @Log4j
- @AllArgsConstructor
- @NoArgsConstructor
- @EqualsAndHashCode
- @NonNull
- @Cleanup
- @ToString
- @RequiredArgsConstructor
- @Value
- @SneakyThrows
- @Synchronized
注解作用
@Data
注解在类上,提供类所有属性的get和set方法,此外还提供了equals、canEqual、toString方法以及默认构造函数
@Setter
- 注解在类上,提供类的默认构造函数以及所有属性的set方法
- 注解在属性上,提供类的默认构造函数以及所有属性的set方法
@Getter
注解在类上,提供类的默认构造函数以及所有属性的get方法
注解在属性上,提供类的默认构造函数以及所有属性的get方法
@Log4j
注解在类上,提供类的默认构造函数以及该类的日志对象
如果项目中没有对应的日志依赖,建议pom文件中加入
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<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.15</version>
<exclusions>
<exclusion>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
</exclusion>
<exclusion>
<groupId>javax.jms</groupId>
<artifactId>jms</artifactId>
</exclusion>
<exclusion>
<groupId>com.sun.jdmk</groupId>
<artifactId>jmxtools</artifactId>
</exclusion>
<exclusion>
<groupId>com.sun.jmx</groupId>
<artifactId>jmxri</artifactId>
</exclusion>
</exclusions>
<scope>compile</scope>
</dependency>
@AllArgsConstructor
注解在类上,提供含类全部属性的构造函数
@NoArgsConstructor
注解在类上,提供类的默认构造函数
@EqualsAndHashCode
注解在类上,提供类的默认构造函数、equals方法、canEqual方法、HashCode方法
@NonNull
注解在类上,提供类的默认构造函数以及如果有属性为NULL则抛NullPointException
注解在属性上,提供类的默认构造函数以及该属性为NULL则抛NullPointException
@Cleanup
注解在属性上,注解在那种使用完需要
close
的对象,会自动在finally里代码块中生成close
代码
@ToString
注解在类上,提供类的默认构造函数以及**toString()**方法
@RequiredArgsConstructor
注解在属性上,提供类中final修饰和**@NONULL注解的所有属性的构造函数**
@Value
注解在类上,提供含类全部属性的构造函数以及get()**、equals()、hashCode()、toString()**方法
@SneakyThrows
注解在方法上,作用是将方法内的代码块用try-catch包围起来,并以
@SneakyThrows(Exception.class)
的形式指定抛出Exception的类型。同时也会生成默认构造函数。
@Synchronized
注解在方法上,与在方法名左边直接加synchronized关键字效果类似,对于静态方法和实例方法,synchornized关键字的锁对象分别是class对象和this对象;**@Synchronized则对应的锁对象分别是私有静态final对象lock和私有final对象** lock,同时也可以以
@Synchronized("属性名")
形式自定义锁对象。同时也会生成默认构造函数。