lombok是怎么用的

打印 上一主题 下一主题

主题 924|帖子 924|积分 2772

lombok

Lombok是一个Java库,能主动插入编辑器并构建工具,简化Java开发。通过添加注解的方式,不必要为类编写getter或equals方法,同时可以主动化日记变量。用大白话来讲,Lombok可以通过几个注释在编译的时间为我们的JavaBean动态的生成get,set,tostring,无参构造方法,全参数构造方法,基于builder的创建方式。

在[上一节](用一个项目把控制层、业务层、持久层说明确了,每一句话都讲的很清楚 - ivanlee717 - 博客园)在我们定义一个实体类的时间,会用快捷方法生成了很多方法,但是这种代码我们可以直接通过几个简单的注解完成。
lombok安装
  1. <dependency>
  2.     <groupId>org.projectlombok</groupId>
  3.     <artifactId>lombok</artifactId>
  4. </dependency>
复制代码

lombok原理

Lombok的根本实现原理可以概括为以下几个步骤:

  • 注解扫描:Lombok的注解处理器会扫描Java源代码中的注解,并找到使用了Lombok注解的类、字段和方法。
  • AST操作:Lombok注解处理器会对注解所标注的类进行抽象语法树(AST)的解析和操作,以识别和处理这些注解。
  • 注解解析:注解处理器解析找到的注解,确定必要生成的代码范例和内容。
  • 代码生成:基于注解的定义和规则,Lombok注解处理器生成相应的代码片段,如getter和setter方法、构造函数等。
  • 代码注入:生成的代码片段被插入到编译结果中的相应位置,与手动编写的代码合并在一起。
  • 最终编译:编译器将生成的代码和手动编写的代码一起编译为最终的字节码文件。

普通的java步伐运行原理如上图所示,但是lombok会作为一个插件资助用户代码更简洁

lombok注解

注解注解作用@Getter主动生成getter方法@Setter主动生成Setter方法@ToString主动生成tostring方法@EqualsAndHashCode主动生成equals和hashCode方法@NoArgsConstructor主动生成无参构造函数@AllArgsConstructor主动生成包含全部字段的构造函数常用的组合注解有
注解注解作用@Data组合了@Getter、@Setter、@ToString、@EqualsAndHashCode等注解的功能@Value组合了@Getter、@ToString、@EqualsAndHashCode等注解的功能
@Data注解和@Value注解有哪些区别?
@Data生成的类是可变的,具有可读写的setter方法,@Value生成的类是不可变的,字段是final的,没有生成setter方法。
Lombok日记注解:
注解注解作用@Slf4j主动生成一个名为log的日记记录器其他注解用的不多,先提一下
注解注解作用@Builder主动生成Builder模式的构造器方法@NonNull主动生成非空查抄@Delegate主动生成委托方法@Cleanup主动释放资源代码实现


直接设置这三个注解就资助我们搞定了很多冗余的代码,如今写一个测试方法
  1. @Test
  2. public void lombok(){
  3.     User user = new User();
  4.     user.setUsername("test");
  5.     user.setPassword("1234");
  6.     user.setGender(1);
  7.     user.setCreateUser(user.getUsername());
  8.     user.setModifiedUser(user.getUsername());
  9.     Date date = new Date();
  10.     user.setCreateTime(date);
  11.     user.setModifiedTime(date);
  12.     System.out.println(user.toString());
  13. }
复制代码

上述过程也可以直接使用@Data解决。
如果在定义实体的时间使用@builder,可以在声明一个实例的时间运用以下写法
  1. User user = User.builder()
  2.                 .uid(1)
  3.                 .username("1234")
  4.                 .password("5678")
  5.                 .gender(0)
  6.                 .email("kxcnsakdn").build();
  7. System.out.println(user.toString());
复制代码


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

汕尾海湾

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表