lombok使用

介绍: 
在项目中使用Lombok可以减少很多重复代码的书写。比如说getter/setter/toString等方法的编写。

引入依赖: 
在项目中添加Lombok依赖jar,在pom文件中添加如下部分。(不清楚版本可以在Maven仓库中搜索)

1 <!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
2     <dependency>
3         <groupId>org.projectlombok</groupId>
4         <artifactId>lombok</artifactId>
5         <version>1.16.18</version>
6         <scope>provided</scope>
7     </dependency>

使用: 
在对应的类或者方法上使用对应注解即可。

Lombok有哪些注解: 
@Setter 
@Getter 
@Data 
@Log(这是一个泛型注解,具体有很多种形式) 
@AllArgsConstructor 
@NoArgsConstructor 
@EqualsAndHashCode 
@NonNull 
@Cleanup 
@ToString 
@RequiredArgsConstructor 
@Value 
@SneakyThrows 
@Synchronized

@Getter和@Setter

该注解使用在类或者属性上,该注解可以使用在类上也可以使用在属性上。生成的getter遵循布尔属性的约定。例如:boolean类型的sex,getter方法为isSex而不是getSex

在使用该注解时,会默认生成一个无参构造。和对应的getterhe setter方法

该注解也可以使用在单个属性上,会默认生成一个无参构造

@Data

该注解使用在类上,该注解会提供getter、setter、equals、canEqual、hashCode、toString方法。

@NonNull

该注解使用在属性上,该注解用于属的非空检查,当放在setter方法的字段上,将生成一个空检查,如果为空,则抛出NullPointerException。 
该注解会默认是生成一个无参构造。

@toString

该注解使用在类上,该注解默认生成任何非讲台字段以名称-值的形式输出。 
1、如果需要可以通过注释参数includeFieldNames来控制输出中是否包含的属性名称。 
2、可以通过exclude参数中包含字段名称,可以从生成的方法中排除特定字段。 
3、可以通过callSuper参数控制父类的输出。

callSuper输出父类属性 
注意:父类也要有toString方法,不然打印的是对象内存地址 
例如: 
//父类无toString方法 
Person(super=com.motui.Person@3abfe836, firstName=motui, address=北京, dateOfBirth=Tue Jan 09 11:49:05 CST 2018, sex=true) 
//父类有toString方法 
Person(super=People(id=111), firstName=motui, address=北京, dateOfBirth=Tue Jan 09 11:50:11 CST 2018, sex=true)

@EqualsAndHashCode

该注解使用在类上,该注解在类级别注释会同时生成equals和hashCode。 
注意继承关系的时候该注解的使用。详细介绍参照官方介绍 
存在继承关系需要设置callSuper参数为true。

@Data

该注解使用在类上,该注解是最常用的注解,它结合了@ToString,@EqualsAndHashCode, @Getter和@Setter。本质上使用@Data注解,类默认@ToString和@EqualsAndHashCode以及每个字段都有@Setter和@getter。该注解也会生成一个公共构造函数,可以将任何@NonNull和final字段作为参数。

虽然@Data注解非常有用,但是它没有与其他注解相同的控制粒度。@Data提供了一个可以生成静态工厂的单一参数,将staticConstructor参数设置为所需要的名称,Lombok自动生成的构造函数设置为私有,并提供公开的给定名称的静态工厂方法。 
相当于是将创建的构造函数变为私有的(private),然后再提供一个公有的给定名称的静态工厂方法。

@Data(staticConstructor = “PersonFactory”)
public class Person{
……}private person(){}public static Person PersonFactory(){
return new Person;
}

  

@AllArgsConstructor

该注解使用在类上,该注解提供一个全参数的构造方法,默认不提供无参构造。

@NoArgsConstructor

该注解使用在类上,该注解提供一个无参构造

@RequiredArgsConstructor

该注解使用在类上,使用类中所有带有 @NonNull 注解的或者带有 final 修饰的成员变量生成对应的构造方法。

@Value

这个注解用在 类 上,会生成含所有参数的构造方法,get 方法,此外还提供了equals、hashCode、toString 方法。 
注意:没有setter

@Cleanup

该注解使用在属性前,该注解是用来保证分配的资源被释放。在本地变量上使用该注解,任何后续代码都将封装在try/finally中,确保当前作用于中的资源被释放。默认@Cleanup清理的方法为close,可以使用value指定不同的方法名称。

@SneakyThrows

该注解使用在方法上,这个注解用在 方法 上,可以将方法中的代码用 try-catch 语句包裹起来,捕获异常并在 catch 中用 Lombok.sneakyThrow(e) 把异常抛出,可以使用 @SneakyThrows(Exception.class) 的形式指定抛出哪种异常。该注解需要谨慎使用。

@Synchronized

该注解使用在类或者实例方法上,Synchronized在一个方法上,使用关键字可能会导致结果和想要的结果不同,因为多线程情况下会出现异常情况。Synchronized 
关键字将在this示例方法情况下锁定当前对象,或者class讲台方法的对象上多锁定。这可能会导致死锁现象。一般情况下建议锁定一个专门用于此目的的独立锁,而不是允许公共对象进行锁定。该注解也是为了达到该目的。

转载于:https://www.cnblogs.com/xiaoxiaodyj/p/9882127.html

lombok的详细使用相关推荐

  1. lombok使用详细教程

    lombok使用总结 前提 这篇文章主要介绍lombok的使用,至于lombok的源码和原理暂不探究,可以看上一篇文章插件化注解处理API去了解lombok的基本原理.参考资料: lombok官网 l ...

  2. lombok如何给属性设置_你不得不会的Lombok全面详细讲解,全网最详细的教程

    读者范围: 如果你使用过Lombok你可能只使用了部分功能,那么这里列举了所有功能,你继续阅读能完善这方面的知识: 如果你还没用用过,甚至不知道这是什么,那么对不起,你已经被技术淘汰了,这里有一份详尽 ...

  3. 40.lombok在IntelliJ IDEA下的使用

    转自:https://www.cnblogs.com/yjmyzz/p/lombok-with-intellij-idea.html lombok是一款可以精减java代码.提升开发人员生产效率的辅助 ...

  4. Lombok经常用,却不知道它的原理是什么

    点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 来源 | https://urlify.cn/y2UnAn ...

  5. Lombok经常用,但是你知道它的原理是什么吗?

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者:不学无数的程序员 地址:my.oschina.net/u/4 ...

  6. Lombok 使用详解,简化 Java 编程

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 作者 | 日拱一兵 来源 | 公众号(日拱一兵) 在 Java 应 ...

  7. idea ssm框架 mysql_idea搭建简单ssm框架的最详细教程(新)

    为开发一个测试程序,特搭建一个简单的ssm框架,因为网上看到很多都是比较老旧的教程,很多包都不能用了,eclipes搭建并且其中还附带了很多的其他东西,所以特此记录一下mac中idea搭建过程. 另: ...

  8. 一不小心就踩了lombok的坑?

    引言 今天中午正在带着耳机遨游在代码的世界里,被运营在群里@了,气冲冲的反问我最近有删生产的用户数据的吗?我肯定客气的回答道没有呀?生产的数据我怎么能随随便便可以删除,这可是公司的红线,再说了我也没有 ...

  9. 使用Project Lombok是否安全? [关闭]

    本文翻译自:Is it safe to use Project Lombok? [closed] In case you don't know Project Lombok helps with so ...

  10. 开发环境中实现Lombok消除Java冗余

    Lombok是一种JavaArchive(JAR)文件,可用来消除Java代码的冗长.通过在开发环境中实现Lombok,开发人员可以节省构建诸如hashCode()和equals()这样的方法以及以往 ...

最新文章

  1. 2018半年总结:走过的路
  2. POJ1942-Paths On a Grid-组合数学
  3. 洛谷 P1417 烹调方案
  4. Swift基础语法 、 元组(Tuple)
  5. 详解CockroachDB事务处理系统
  6. webapi put 404
  7. ionic app 优化三件套,让其更贴近原生app
  8. 解决python读取pickle报错ValueError: unsupported pickle protocol: 5
  9. layui option 动态添加_layuiselect如何动态添加option
  10. tomcat组播实现session一致性_java会话技术-Session
  11. java equals 字符串_Java String 字符串 比较 == equals
  12. CentOS7 扩容时发现 /dev/mapper/centos-home 不存在,创建后登录终端显示 -bash-4.2
  13. .vue文件怎么使用_手机技巧:被人忽视OTG功能怎么使用?复制文件到U盘的新方法...
  14. 学计算机买电脑显卡1605ti够吗,GTX1650和GTX1050Ti哪个好?GTX1050ti和GTX1650性能差距对比评测...
  15. 51单片机完成时钟形式显示
  16. 【JavaScript】实现移动小精灵
  17. Python多线程编程详解,文章比较长,需耐心浏览
  18. 程序员爆改《GTA OL》代码后加载速度快了 70%,R 星采纳并奖励 1 万美元
  19. 视频教程-AI 教程illustrator从入门到精通-Illustrator
  20. C/C++程序的编译过程

热门文章

  1. iOS换肤功能的简单处理框架
  2. 聚焦强化学习,AAAI 2019杰出论文公布:CMU、斯坦福等上榜
  3. 信息时代大数据的再认识
  4. js 获取对象属性个数
  5. LVS基本介绍及NAT模型配置示例
  6. Linux下的文件共享全攻略系列之三:主流FTP服务器Wu-ftpd入门指南
  7. 旧文重现,10种职场经典寓言
  8. js pug 代码_网页模板pug基本语法
  9. 腾讯云dts使用注意事项
  10. oracle的游标的属性,Oracle 游标属性