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

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

25 人参与  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://m.zhangshiyu.com/post/206311.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

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

最新文章

  • 京圈佛子破戒后,我改嫁京圈纨绔(沈墨渊,白晶晶)
  • 前世被闺蜜害死,重生后我让她从太子妃变疯女苏婉儿,清歌完本_前世被闺蜜害死,重生后我让她从太子妃变疯女(苏婉儿,清歌)
  • 全书浏览七零军嫂太彪悍,带三宝上军区离婚(沈清落,陈桂花,陆有为)_七零军嫂太彪悍,带三宝上军区离婚(沈清落,陈桂花,陆有为)全书结局
  • 今天也没变成昨天(周扬陈默)全书免费_(周扬陈默)今天也没变成昨天后续(周扬陈默)
  • 重生后,秦总非要父以子贵(许沐晴,秦越泽)全书浏览_重生后,秦总非要父以子贵全书浏览
  • 他嫌弃我喝两块钱豆浆上不了台面,我结婚后他又哭又闹全书万照,白青青在线
  • 昭然若梦前尘烬列表_昭然若梦前尘烬(温昭然方池雲)
  • 导师借我股票账号,我倒欠五十万(孟潇潇,宁薇)_导师借我股票账号,我倒欠五十万孟潇潇,宁薇
  • 拒绝把外卖券给舍友,竹马送我到迪拜捡垃圾(周钰泽,蒋清清,思源)全书浏览_拒绝把外卖券给舍友,竹马送我到迪拜捡垃圾全书浏览
  • 我的人生,你已出局(程森凌古楚文)_我的人生,你已出局程森凌古楚文
  • 穿书成病娇女配,睁眼就签下离婚协议书(朱楼)_穿书成病娇女配,睁眼就签下离婚协议书
  • 老婆逼我给白月光捐肾,我死后她悔疯了(宋逸晨沈墨白)全书浏览_老婆逼我给白月光捐肾,我死后她悔疯了全书浏览

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

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