当前位置:首页 » 《关注互联网》 » 正文

Lombok :简化 Java 编程的得力工具

21 人参与  2024年12月24日 18:01  分类 : 《关注互联网》  评论

点击全文阅读


在 Java 开发过程中,常常需要编写大量的样板代码,例如构造函数、Getter 和 Setter 方法、equals 和 hashCode 方法等。这些代码虽然逻辑相对固定,但编写起来却较为繁琐且容易出错,并且会使代码显得冗长。Lombok 应运而生,它通过注解的方式自动为 Java 类生成这些常用的方法,极大地简化了代码编写过程,让开发者能够将更多精力集中在业务逻辑的实现上。

 1.Getter 和 Setter 方法生成


在普通的Java 类中,如果有私有属性,通常需要手动编写对应的 Getter 和 Setter 方法。例如:

public class student {    private String name;    private int age;    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public int getAge() {        return age;    }    public void setAge(int age) {        this.age = age;    }}


使用Lombok后,只需在类上添加@Getter和@Setter注解:

@Getter@Setterpublic class student {    private String name;    private int age;} 


这样 Lombok 会自动为name和age属性生成Getter和Setter方法,大大减少了代码量。

 2.构造函数生成
 

若要生成无参构造函数,可使用@NoArgsConstructor注解,例如:

@NoArgsConstructorpublic class Student {    private String id;    private String major;} 


 程序会自动生成如下无参构造函数:

public Student() {}


全参构造函数:@AllArgsConstructor注解可生成包含所有属性的全参构造函数,例如:
 

@AllArgsConstructorpublic class Student {    private String id;    private String name;}

生成的全参构造函数可近似看于:

public Student(String id, String name) {    this.id = id;    this.name= name;} 

部分参数构造函数
@RequiredArgsConstructor注解可用于生成包含特定final或@NonNull修饰属性的构造函数,例如:
 

@RequiredArgsConstructorpublic class student{    @NonNull    private String name;    private int age;}

会生成如下构造函数:
 

 public student(@NonNull String name) {    this.name = name;} 


3.equals 和 hashCode 方法生成

@EqualsAndHashCode注解来自动生成哈希和equals方法,例如:

@EqualsAndHashCodepublic class student {    private String name;    private int  age;} 


4.toString方法生成

@ToString  注解可用于自动生成对象的  toString方法,例如:

@ToStringpublic class student {    private String name;    private int age;    private double grade;} 

 toString方法会以一种清晰的格式输出对象的属性信息,方便调试和日志记录。

4.@Data

使用@Data注解等同于添加@Getter、@Setter、@ToString、@EqualsAndHashCode和合适的构造函数(无参构造函数和全参构造函数),例如:
 

@Datapublic class student {    private int age;    private String name;}


 5.日志

Lombok 提供了方便的日志注解,如@Slf4j 、@Log 等,在类中添加该注解后,Lombok 会自动为类添加一个org.slf4j.Logger类型的日志对象,例如:

@Slf4jpublic class Mytext {    public void logtext() {        log.info("666");        // 业务逻辑代码        log.info("777");    }}


这样就无需手动创建和初始化日志对象,简化了日志记录的代码编写。
 

6.Lombok在实际项目中的应用场景
 

数据传输对象(DTO)
 
在企业级应用开发中,经常需要在不同层之间传递数据,数据传输对象(DTO)主要用于存储和传输数据,其内部大多是属性和对应的 Getter、Setter 方法,使用 Lombok 的@Data注解可以快速创建 DTO 类,提高开发效率。
 
 
领域模型(Domain Model)
 
领域模型是业务逻辑的核心体现,通常包含丰富的业务属性和关联关系。Lombok 可以简化领域模型类的代码编写,例如自动生成构造函数、Getter 和 Setter 方法等,使开发者能够更专注于业务规则的定义和实现。如:

@Data@AllArgsConstructor@NoArgsConstructorpublic class Order {    private String orderId;    private Customer customer;    // 其他业务方法}


 Lombok 的日志注解使得在各个类中添加日志功能变得极为简单,无论是记录系统运行状态、调试信息还是错误信息,都可以方便地使用 Lombok 提供的日志功能,例如:

@Slf4j@RestControllerpublic class textController {    @GetMapping("/text/{id}")    public Product gettextById(@PathVariable String id) {        log.info("当前的产品是: {}", id);        // 根据 id 查询产品并返回        return textService.gettextById(id);    }}

Lombok 是在编译阶段起作用的工具,当 Java 源代码被编译时,Lombok 插件会解析源代码中的注解信息。对于带有 Lombok 注解的类,它会根据注解的定义生成相应的字节码。


7.结论


Lombok通过注解自动生成常用的代码结构,在数据传输对象、领域模型、日志记录等众多应用场景中都有着广泛的应用。在团队开发中,要确保团队成员对 Lombok 的使用规范和注意事项有清晰的认识,并且要保证开发环境(包括 IDE 版本、其他工具和框架的兼容性等)能够支持 Lombok 的运行,这样才能充分发挥 Lombok 的优势,提升 Java 项目的开发质量和效率。


点击全文阅读


本文链接:http://zhangshiyu.com/post/206311.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

最新文章

  • 八零年代:恶毒作精她暴打偏心家人完整版阅读(顾睿诚苏立夏)全文免费阅读无弹窗大结局_(顾睿诚苏立夏)八零年代:恶毒作精她暴打偏心家人完整版阅读小说最新章节列表_笔趣阁(顾睿诚苏立夏) -
  • 踹掉京圈太子爷,二嫁影帝享福了唐酒秦域全本小说(踹掉京圈太子爷,二嫁影帝享福了)全章节小说目录阅读
  • 苏羽宋双儿全文小说最新章节阅读苏羽宋双儿
  • 爱恨循环,虚假同行(宋献音周问聿)小说全章节目录阅读
  • 百度贴吧小说江山为聘:吾妃甚毒,主角苏玉徽赵肃全文免费
  • 热门小说《浮生厌白首》完整版全文阅读
  • 独家下乡海岛,嫁绝嗣军官一胎双宝小说-主角沈竹一霍锦之全文免费阅读
  • 《被后妈欺辱后,我拨通了打给舅舅的电话》小九阿楠全章节目录免费阅读
  • 女儿要后妈,我踹开老公离婚了小说主角是沈陆离凌恒全文完整版阅读
  • 系统:算命后,我修为暴涨全文小说(陈玄阴九)全文免费阅读无弹窗大结局_(系统:算命后,我修为暴涨全文免费阅读全文大结局)最新章节列表_笔趣阁(系统:算命后,我修为暴涨全文) -
  • 一口气看完小说《孟枝意许云澈傅宵》孟枝意许云澈傅宵完整版《孟枝意许云澈傅宵》大结局爆款小说
  • 完整版小说免费阅读我还是没能娶到她贺文倩卓庭陆益阳_我还是没能娶到她贺文倩卓庭陆益阳全集免费小说

    关于我们 | 我要投稿 | 免责申明

    Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1