欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 社会 > Lombok

Lombok

2025/5/20 10:16:37 来源:https://blog.csdn.net/yesyesyes_yes/article/details/148069316  浏览:    关键词:Lombok

Lombok

Lombok 是一个 Java 库,通过注解自动生成样板代码(如 Getter/Setter、构造函数等),从而简化开发。在你提供的代码中,@AllArgsConstructor 就是一个 Lombok 注解。以下是 Lombok 常用注解及其作用的详细说明:


1. @AllArgsConstructor

作用

自动生成一个包含所有字段的全参构造函数

示例
@AllArgsConstructor
public class User {private String name;private int age;
}

等价于:

public class User {private String name;private int age;
​public User(String name, int age) {this.name = name;this.age = age;}
}
在拦截器中的使用
@AllArgsConstructor
private static class ZhipuHeaderInterceptor implements Interceptor {final String apiKey;  // 自动生成构造函数 ZhipuHeaderInterceptor(String apiKey)
}

2. 其他常用 Lombok 注解

(1) @NoArgsConstructor

生成一个无参构造函数

@NoArgsConstructor
public class User {private String name;
}

等价于:

public class User {private String name;public User() {}
}
(2) @RequiredArgsConstructor

生成一个包含所有 final@NonNull 字段的构造函数。

@RequiredArgsConstructor
public class User {private final String name;private int age;  // 非 final,不会包含在构造函数中
}

等价于:

public class User {private final String name;private int age;
​public User(String name) {this.name = name;}
}
(3) @Getter / @Setter

自动生成字段的 Getter 和 Setter 方法。

@Getter
@Setter
public class User {private String name;
}

等价于:

public class User {private String name;public String getName() { return name; }public void setName(String name) { this.name = name; }
}
(4) @Data

组合注解,包含 @Getter@Setter@ToString@EqualsAndHashCode@RequiredArgsConstructor

@Data
public class User {private String name;private int age;
}
(5) @Builder

提供链式调用的构造器模式。

@Builder
public class User {private String name;private int age;
}// 使用
User user = User.builder().name("Alice").age(25).build();

3. 为什么在拦截器中使用 @AllArgsConstructor

在你的 ZhipuHeaderInterceptor 中:

  1. 字段是 final final String apiKey 需要在构造时初始化,使用 @AllArgsConstructor 可以自动生成构造函数,避免手动编写。

  2. 简化代码 拦截器通常只需依赖注入少量字段(如 apiKey),Lombok 让代码更简洁。


4. 使用 Lombok 的注意事项

  1. IDE 需要安装插件 IntelliJ IDEA/Eclipse 需安装 Lombok 插件,否则会报编译错误。

  2. 项目依赖 在 Maven/Gradle 中引入 Lombok 依赖:

    <!-- Maven -->
    <dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.30</version><scope>provided</scope>
    </dependency>
  3. 谨慎使用 @Data 如果类需要继承或有特殊逻辑,@Data 可能生成不期望的 equals()/hashCode() 方法。


5. 完整拦截器代码对比(有无 Lombok)

使用 Lombok
@AllArgsConstructor
private static class ZhipuHeaderInterceptor implements Interceptor {final String apiKey;// 无需手动写构造函数
}
未使用 Lombok
private static class ZhipuHeaderInterceptor implements Interceptor {final String apiKey;public ZhipuHeaderInterceptor(String apiKey) {this.apiKey = apiKey;}
}

总结

  • @AllArgsConstructor 是 Lombok 提供的便捷注解,用于自动生成全参构造函数。

  • 在拦截器等需要依赖注入的场景中,Lombok 能显著减少样板代码。

  • 结合其他注解(如 @Getter@Builder),可以进一步简化 Java 开发。Lombok 是一个 Java 库,通过注解自动生成样板代码(如 Getter/Setter、构造函数等),从而简化开发。在你提供的代码中,@AllArgsConstructor 就是一个 Lombok 注解。以下是 Lombok 常用注解及其作用的详细说明:


    1. @AllArgsConstructor

    作用

    自动生成一个包含所有字段的全参构造函数

    示例
    @AllArgsConstructor
    public class User {private String name;private int age;
    }

    等价于:

    public class User {private String name;private int age;public User(String name, int age) {this.name = name;this.age = age;}
    }
    在拦截器中的使用
    @AllArgsConstructor
    private static class ZhipuHeaderInterceptor implements Interceptor {final String apiKey;  // 自动生成构造函数 ZhipuHeaderInterceptor(String apiKey)
    }

    2. 其他常用 Lombok 注解

    (1) @NoArgsConstructor

    生成一个无参构造函数

    @NoArgsConstructor
    public class User {private String name;
    }

    等价于:

    public class User {private String name;public User() {}
    }
    (2) @RequiredArgsConstructor

    生成一个包含所有 final@NonNull 字段的构造函数。

    @RequiredArgsConstructor
    public class User {private final String name;private int age;  // 非 final,不会包含在构造函数中
    }

    等价于:

    public class User {private final String name;private int age;public User(String name) {this.name = name;}
    }
    (3) @Getter / @Setter

    自动生成字段的 Getter 和 Setter 方法。

    @Getter
    @Setter
    public class User {private String name;
    }

    等价于:

    public class User {private String name;public String getName() { return name; }public void setName(String name) { this.name = name; }
    }
    (4) @Data

    组合注解,包含 @Getter@Setter@ToString@EqualsAndHashCode@RequiredArgsConstructor

    @Data
    public class User {private String name;private int age;
    }
    (5) @Builder

    提供链式调用的构造器模式。

    @Builder
    public class User {private String name;private int age;
    }// 使用
    User user = User.builder().name("Alice").age(25).build();

    3. 为什么在拦截器中使用 @AllArgsConstructor

    在你的 ZhipuHeaderInterceptor 中:

    1. 字段是 final final String apiKey 需要在构造时初始化,使用 @AllArgsConstructor 可以自动生成构造函数,避免手动编写。

    2. 简化代码 拦截器通常只需依赖注入少量字段(如 apiKey),Lombok 让代码更简洁。


    4. 使用 Lombok 的注意事项

    1. IDE 需要安装插件 IntelliJ IDEA/Eclipse 需安装 Lombok 插件,否则会报编译错误。

    2. 项目依赖 在 Maven/Gradle 中引入 Lombok 依赖:

      <!-- Maven -->
      <dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.30</version><scope>provided</scope>
      </dependency>
    3. 谨慎使用 @Data 如果类需要继承或有特殊逻辑,@Data 可能生成不期望的 equals()/hashCode() 方法。


    5. 完整拦截器代码对比(有无 Lombok)

    使用 Lombok
    @AllArgsConstructor
    private static class ZhipuHeaderInterceptor implements Interceptor {final String apiKey;// 无需手动写构造函数
    }
    未使用 Lombok
    private static class ZhipuHeaderInterceptor implements Interceptor {final String apiKey;public ZhipuHeaderInterceptor(String apiKey) {this.apiKey = apiKey;}
    }

    总结

    • @AllArgsConstructor 是 Lombok 提供的便捷注解,用于自动生成全参构造函数。

    • 在拦截器等需要依赖注入的场景中,Lombok 能显著减少样板代码。

    • 结合其他注解(如 @Getter@Builder),可以进一步简化 Java 开发。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词