首页 > 其他分享 >Lombok简介、使用、工作原理、优缺点

Lombok简介、使用、工作原理、优缺点

时间:2023-09-24 12:33:18浏览次数:60  
标签:username 简介 age 优缺点 id 注解 Lombok public

1.Lombok简介

Lombok是一个Java库,能自动插入编辑器并构建工具,简化Java开发。通过添加注解的方式,不需要为类编写getter或eques方法,同时可以自动化日志变量。

简而言之:Lombok能以简单的注解形式来简化java代码,提高开发人员的开发效率。

2.Lombok使用

使用Lombok需要的开发环境Java+Maven+IntelliJ IDEA或者Eclipse(安装Lombok Plugin)

2.1添加maven依赖

<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.4</version>
<scope>provided</scope>
</dependency>

2.2安装插件
使用Lombok还需要插件的配合,我使用开发工具为idea,这里只讲解idea中安装lombok插件,使用eclipse和myeclipse的小伙伴和自行google安装方法。
打开idea的设置,点击Plugins,点击Browse repositories,在弹出的窗口中搜索lombok,然后安装即可。

 

常用注解
下面介绍一下常用的几个注解:

@Setter 注解在类或字段,注解在类时为所有字段生成setter方法,注解在字段上时只为该字段生成setter方法。
@Getter 使用方法同上,区别在于生成的是getter方法。
@ToString 注解在类,添加toString方法。
@EqualsAndHashCode 注解在类,生成hashCode和equals方法。
@NoArgsConstructor 注解在类,生成无参的构造方法。
@RequiredArgsConstructor 注解在类,为类中需要特殊处理的字段生成构造方法,比如final和被@NonNull注解的字段。
@AllArgsConstructor 注解在类,生成包含类中所有字段的构造方法。
@Data 注解在类,生成setter/getter、equals、canEqual、hashCode、toString方法,如为final属性,则不会为该属性生成setter方法。
@Slf4j 注解在类,生成log变量,严格意义来说是常量。private static final Logger log = LoggerFactory.getLogger(UserController.class);
一、不使用Lombok

public class User implements Serializable {

private static final long serialVersionUID = -8054600833969507380L;

private Integer id;

private String username;

private Integer age;

public User() {
}

public Integer getId() {
return id;
}

public void setId(Integer id) {
this.id = id;
}

public String getUsername() {
return username;
}

public void setUsername(String username) {
this.username = username;
}

public Integer getAge() {
return age;
}

public void setAge(Integer age) {
this.age = age;
}

@Override
public String toString() {
return "User{" +
"id=" + id +
", username='" + username + '\'' +
", age=" + age +
'}';
}

@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (o == null || getClass() != o.getClass()) {
return false;
}
User user = (User) o;
return Objects.equals(id, user.id) &&
Objects.equals(username, user.username) &&
Objects.equals(age, user.age);
}

@Override
public int hashCode() {
return Objects.hash(id, username, age);
}

}

二·、用lombok

@Data
public class User implements Serializable {

private static final long serialVersionUID = -8054600833969507380L;

private Integer id;

private String username;

private Integer age;

}

编译源文件,然后反编译class文件,反编译结果如下图。说明@Data注解在类上,会为类的所有属性自动生成setter/getter、equals、canEqual、hashCode、toString方法,如为final属性,则不会为该属性生成setter方法。

 

4.Lombok的优缺点
优点:

能通过注解的形式自动生成构造器、getter/setter、equals、hashcode、toString等方法,提高了一定的开发效率
让代码变得简洁,不用过多的去关注相应的方法
属性做修改时,也简化了维护为这些属性所生成的getter/setter方法等
缺点:

不支持多种参数构造器的重载
虽然省去了手动创建getter/setter方法的麻烦,但大大降低了源代码的可读性和完整性,降低了阅读源代码的舒适度

标签:username,简介,age,优缺点,id,注解,Lombok,public
From: https://www.cnblogs.com/sunujie/p/17725825.html

相关文章

  • strimzi实战之一:简介和准备
    欢迎访问我的GitHub这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos关于strimzistrimzi是一个开源项目,已加入了CNCF,官网地址:https://strimzi.io/借助strimzi,既能快速部署kafka服务,又能对kafka服务进行细致的调节,还能扩展出更多的能力,典型......
  • mysql数据库和oracle的优缺点
    MySQL和Oracle是两个广泛使用的关系型数据库管理系统(RDBMS),每种数据库都有其自身的优势和不足。MySQL的优点开源性:MySQL是一个开源的软件,用户可以免费使用和修改。这降低了成本,并有利于那些财务资源有限的公司。此外,开源社区的贡献也使得MySQL能够持续优化和更新。易用性:MySQL具有高......
  • 1-Elasticsearch简介
    分布式搜索ESElasticsearch简称为ES,是一个开源的可扩展的分布式的全文检索引擎。ES使用Java开发并使用Lucene作为其核心来实现索引和搜索的功能。它通过简单的RestfulAPI和JavaAPI来隐藏Lucene的复杂性,从而让全文搜索变得简单。ES官网:https://www.......
  • Artifactory简介
    Artifactory(JFrogArtifactory)1.Artifactory概念  一个通用的二进制仓库,Maven仓库服务端软件。它可以存储Docker镜像、IOS/Android/EXE软件包,或者MavenJar包  由Java实现,从7.43.x开始,其安装包自带JDK17;开源的JFrog版本只支持Gradle、ivy、maven、SBT、Generic5种仓......
  • docker-compose简介
    1.docker-compose简介  实现docker容器集群的快速编排。管理分成三层:工程(project)、服务(service)、容器(container)  没有解决负载均衡的问题,因此需要借助其它工具实现服务发现及负载均衡,比如Consul  工程配置文件默认文件docker-compose.yml,也可自定义(通过环境变量COMP......
  • Maven命令简介
    1.Maven生命周期  clean、validate、compile、test、package、verify、install、site、deploy.执行后面命令,前面周期自动执行。(可以跳过其中某一步骤,如:test,在mvninstall/package后加上Dmaven.test.skip=true或-DskipTests)  生命周期详细描述  Clean清理删除target目......
  • npm简介
    1.Npm介绍  NodePackageManager,NodeJS包管理和分发工具  直接安装  npminstallmodule_name//install可简写为i  //使用Npm直接安装模块,默认生产环境,包注册到package.json里dependencies中,会把包安装到项目node_modules文件夹里  -S或--save写dep......
  • SAP HanaXFILE:SAP Hana CDS 开发简介
    SAPHanaXFILE:SAPHanaCDS开发简介Posted 2023-02-27 X档案库tags:篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SAPHanaXFILE:SAPHanaCDS开发简介相关的知识,希望对你有一定的参考价值。 SAPHanaCDS开发简介一、CDS简介二、CDSVIEW创建模板1......
  • 解决lombok编译报错
    解决lombok编译报错idea编译报错java:JPSincrementalannotationprocessingisdisabled.Compilationresultsonpartialrecompilationmaybeinaccurate.Usebuildprocess“jps.track.ap.dependencies”VMflagtoenable/disableincrementalannotationprocessing......
  • Node简介
    什么是nodeJavascript可以在浏览器运行,node可以让javascript在浏览器之外运行可以用来做本地运行的软件/网络服务器/游戏等等记得安装vscode里面力扣插件需要先安装node.js,但我不知道node是做什么的本地还没有安装node,下面开始安装安装node登陆node官网下载......