Lombok插件常用注解

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;// 来自那个数据库,因为微服务架构可以一个服务对应一个数据库,同一个信息被存储到不同数据库

}

猜你喜欢

转载自blog.csdn.net/MyronCham/article/details/84136292
今日推荐