博客
关于我
Lombok
阅读量:793 次
发布时间:2023-02-06

本文共 3946 字,大约阅读时间需要 13 分钟。

Lombok开发指南:深入理解Java注解

作为一名开发人员,了解Lombok是一个非常有帮助的工具。通过简化Java代码,Lombok可以帮助我们更专注于业务逻辑,而不是繁琐的代码书写。以下是关于Lombok的一些实用指南。


1. 安装与配置

如果你是IntelliJ IDEA用户,可以按照以下步骤安装Lombok插件:

  • 进入 File > Settings > Plugins
  • 在Marketplace中搜索“Lombok”。
  • 找到Lombok插件,点击 Install
  • 安装完成后,重启IntelliJ IDEA。
  • 接下来,需要引入Lombok的jar包。可以通过以下方式添加依赖:

    org.projectlombok
    lombok
    1.16.14

    2. 常用注解解析

    Lombok提供了丰富的注解,能够简化代码。以下是几种常用的注解及其使用方法。

    2.1 @Getter 和 @Setter

    • @Getter:用于生成getter方法,获取对象属性的值。

      @Getterprivate Integer id;
    • @Setter:用于生成setter方法,设置对象属性的值。

      @Setterprivate String name;

    可以通过设置 access = AccessLevel.PROTECTED 来修改方法的访问级别。

    2.2 @ToString

    • @ToString:用于生成对象的toString()方法。
      @ToString(exclude = {"id", "name"})public class User {    private Integer id;    private String name;    private String phone;}

      生成的toString()方法会打印类名和非排除的属性。

    2.3 @EqualsAndHashCode

    • @EqualsAndHashCode:用于生成equals()hashCode()方法。
      @EqualsAndHashCode(exclude = {"id"}, callSuper = true)public class User {    private Integer id;    private String name;}

      生成的equals()方法会比较对象的非排除字段。

    2.4 @NoArgsConstructor、@RequiredArgsConstructor、@AllArgsConstructor

    • @NoArgsConstructor:生成无参构造方法。

      @NoArgsConstructor(force = true)public class User {    @NonNull private Integer id;    private String name;}
    • @RequiredArgsConstructor:生成带参构造方法,参数只能是非初始化的final字段或带@NonNull注解的字段。

      @RequiredArgsConstructor(staticName = "of")public class User {    @NonNull private Integer id;    private String name = "bbbb";}
    • @AllArgsConstructor:生成全参数构造方法。

      @AllArgsConstructorpublic class User {    @NonNull private Integer id;    private String name = "bbbb";}

    2.5 @Data

    • @Data:包含了@ToString@EqualsAndHashCode@Getter/@Setter@RequiredArgsConstructor的功能。
      @Datapublic class User {    private Integer id;    private String name;}

    2.6 @Accessors

    • @Accessors:用于控制生成的getter和setter的前缀和是否链式调用。
      @Accessors(prefix = "get", fluent = false, chain = false)public class User {    private Integer id;}

      生成的方法会是getId()setId()


    3. 高级注解

    除了上述常用注解,Lombok还有更多高级注解可以帮助我们简化代码。

    3.1 @Synchronized

    • @Synchronized:给方法加上同步锁。
      @Synchronizedpublic static void hello() {    System.out.println("world");}

      生成的方法会在方法前加上synchronized锁。

    3.2 @Wither

    • @Wither:用于为final字段赋值。
      @Witherprivate final int age;@Wither(AccessLevel.PROTECTED)@NonNull private final String name;

      支持链式调用,如withAge(25).withName("张三").build()

    3.3 @onX

    • @onX:用于在注解中添加其他注解。
      @onX({@Id, @Column(name = "id", nullable = false)})private Integer id;

    3.4 @Builder

    • @Builder:生成构建器(Builder模式)。
      @Builderpublic class Person {    private String name;    private String city;}

      使用示例:

      Person.builder().name("Adam").city("San Francisco").build();

    3.5 @Delegate

    • @Delegate:将方法委派到另一个接口。
      @Delegatepublic class MyList implements List
      { // ...}

      生成的方法会委派到List接口。


    4. 实际案例

    以下是一个实际项目中使用Lombok的示例:

    @Entity@Table(name = "school_download_limit")@RequiredArgsConstructor(staticName = "of")@Accessors(chain = true)@ToStringpublic class SchoolDownloadLimit implements Serializable {    private static final long serialVersionUID = -196412797757026250L;    @Getter(onMethod = @_({@Id, @Column(name = "id", nullable = false), @GeneratedValue(strategy = GenerationType.AUTO)}))    @Setter    private Integer id;    @Getter(onMethod = @_(@Column(name = "school_id")))    @Setter    private Integer schoolId;    @Getter(onMethod = @_(@Column(name = "per_download_times")))    @Setter    private Integer perDownloadTimes;    @Getter(onMethod = @_(@Column(name = "limit_time")))    @Setter    private Integer limitTime;    @Getter(onMethod = @_(@Column(name = "download_to_limit_an_hour")))    @Setter    private Integer downloadToLimitInHour;    @Getter(onMethod = @_(@Column(name = "available")))    @Setter    private Integer available = 1;    @Getter(onMethod = @_(@Column(name = "create_time")))    @Setter    private Date createTime;    @Getter(onMethod = @_(@Column(name = "update_time")))    @Setter    private Date updateTime;}

    5. 总结

    Lombok通过简化Java代码,帮助开发人员减少冗余工作,提高效率。掌握这些注解可以让你更高效地编写和维护代码。希望这篇文章能为你提供实用的帮助!

    转载地址:http://ajufk.baihongyu.com/

    你可能感兴趣的文章
    Logstash配置详解---ElasticStack(ELK)工作笔记020
    查看>>
    loguru日志模块:简化Python自动化测试的日志管理!
    查看>>
    loj #6485. LJJ 学二项式定理 (模板qwq)
    查看>>
    Loj 6285. 数列分块入门 9
    查看>>
    LOJ#10064. 「一本通 3.1 例 1」黑暗城堡
    查看>>
    LOJ2542. 「PKUWC2018」随机游走【概率期望DP+Min-Max容斥(最值反演)】
    查看>>
    Loki 学习总结(1)—— Loki 中小项目日志系统的不二之选
    查看>>
    lol服务器维修时间2018,《英雄联盟》维护到几点结束 2018维护公告介绍
    查看>>
    Lombok
    查看>>
    lombok @EqualsAndHashCode 注解的影响
    查看>>
    Lombok 中 @EqualsAndHashCode注解的使用
    查看>>
    lombok 的使用讲解
    查看>>
    Lombok、Hutool等开发利器
    查看>>
    Lombok中的@Builder注解的使用
    查看>>
    Lombok天天用,它的原理是什么你知道吗?
    查看>>
    LomBok常用注解及详细介绍
    查看>>
    lombok插件jar包的下载和使用
    查看>>
    lombok注解 @Data使用在继承类上时出现警告解决
    查看>>
    lombok的@Data注解在继承类上时提示警告
    查看>>
    Lombok的使用及其原理
    查看>>