Lombok
是一种 Java™
实用工具,可用来帮助开发人员消除 Java 的冗长,尤其是对于简单的 Java 对象(POJO)。它通过注解实现这一目的。
1、Lombok注解概览
Lombok是一个通过注解形式帮助构造简洁、规范的Java代码的工具,通过使用对应的注解,可以在编译源码的时候生成对应的方法。
下载地址:
github地址:https://github.com/rzwitserloot/lombok
官方地址:https://projectlombok.org/
官方API : https://projectlombok.org/features/all
jar包下载路径:https://projectlombok.org/download
2、添加依赖
<lombok.version>1.16.20</lombok.version>
<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lombok.version}</version>
<scope>provided</scope>
</dependency>
3、安装插件(idea)
由于 Lombok
采取的注解形式的,在编译后,自动生成相应的方法,为了不让 ide 疯了,需要下载插件了支持它。
以 idea 为例:查找插件 lombok plugin
安装即可。
注:在eclipse上无需安装,直接导入jar包使用即可。
若在eclipse中用到lombok.jar里@Data @NoArgsConstructor @AllArgsConstructor三个注解的时候报错。
详见:https://blog.csdn.net/icecoola_/article/details/77414572
- 1、在eclipse安装目录下,找到eclipse.ini文件并修改,即在文件内容后面缀上:
-javaagent:[lombok.jar所在路径]
-Xbootclasspath/a:[lombok.jar所在路径]
- 2、打开命令窗口cmd,输入:java -jar [lombok.jar所在路径]
重启eclipse即可。
4、常用注解介绍
1、@NoArgsConstructor :
生成一个无参数的构造方法。
2、@AllArgsContructor:
会生成一个包含所有变量的带参构造方法。
@RequiredArgsConstructor: 会生成一个包含常量,和标识了NotNull的变量的构造方法。生成的构造方法是私有的private。
3、@Data:
使用 @Data
注解就可以有下面几个注解的功能: @ToString
、@Getter
、@Setter
、@EqualsAndHashCode
、@NoArgsConstructor
。
注意:同时使用@Data
和 @AllArgsConstructor
后 ,默认的无参构造函数失效,如果需要它,要重新设置@NoArgsConstructor。
4、@Getter and @Setter
可以用@Getter / @Setter注释字段(也可以注释到类上的—(在实体类中常用且推荐)),lombok会自动生成默认的Getter/Setter方法。
5、@ToString
自动生成toString()方法,默认情况,按顺序(以“,”分隔)打印你的类名称以及每个字段。也可以设置不包含哪些字段/@ToString(exclude = {“id”,”name”})
6、@Synchronized:
方法中所有的代码都加入到一个代码块中,默认静态方法使用的是全局锁,普通方法使用的是对象锁,当然也可以指定锁的对象。
private final Object lock = new Object();
@Synchronized("lock")
public void foo() {
// Do something
}
@Synchronized给方法加上同步锁,建议实际开发直接写在代码中Synchronized
7、@Accessors
注解用来配置lombok如何产生和显示getters和setters的方法。
支持的配置关键字:
lombok.assessors.chain=[true|false](default:false)
如果设置为true,没有任何类被@Accessors注解,或者有类被注解但是没有为chain参数显式赋值,则表现为@Accessors(chain=true)
lombok.accessors.fluent=[ true | false](default:false)
如果设置为真,没有任何类被@Accessors注解,或者有类被注解对fluent参数没有显式赋值,则表现为@Accessors(fluent=true)
lombok.accessors.prefix+=afield prefix(default:empty list)
这是一个列表属性;条目可以通过 +=操作符添加。从父配置文件继承的前缀可以通过-=操作符移除。没有任何类被@Accessors注解,或者有类被注解但是注解对prefix参数显式的赋值,则表现为
@Accessors(prefix={prefixes listed in configuration})
lombok.accessors.flagUsage=[warning | error](default:not set)
如果配置了,lombok标出每个使用了@Accessors注解为一个警告还是一个错误。
5、实际使用
import java.io.Serializable;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.ToString;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
@NoArgsConstructor //生成一个无参数的构造方法
@AllArgsConstructor //会生成一个包含所有变量的构造方法
@Data //@Data 注解就可以有下面几个注解的功能: @ToString、@Getter、@Setter、@EqualsAndHashCode、@NoArgsConstructor
//注意的是,同时使用@Data 和 @AllArgsConstructor 后 ,默认的无参构造函数失效,如果需要它,要重新设置 @NoArgsConstructors
@Accessors(chain=true) //用来配置lombok如何产生和显示getters和setters的方法
@ToString
public class Dept implements Serializable {
private Long deptno; // 主键
private String dname; // 部门名称
private String db_source;// 来自那个数据库,因为微服务架构可以一个服务对应一个数据库,同一个信息被存储到不同数据库
}