Java は、特にゲッター、セッター、コンストラクター、toString メソッドなどの反復的な定型コードを扱う場合、冗長であることで知られています。必要ではありますが、この乱雑さにより開発が遅くなり、コードの読み取りや保守が困難になる可能性があります。 Project Lombok は、コンパイル時に定型コードを自動的に生成することで、この問題を解決します。
このガイドでは、Lombok が Java に必須のツールである理由とその設定方法を詳しく説明し、Lombok がアノテーション処理を使用して Java の抽象をマッピングおよび変更する方法を理解するために舞台裏を見ていきます。構文ツリー (AST)。機能を犠牲にすることなくコードが簡潔であることを確認します。
Java には大量の定型コードが必要です。フィールド、コンストラクター、ゲッター、セッター、および toString メソッドを含む単純な POJO を考えてみましょう。
public class User { private String name; private int age; public User(String name, int age) { this.name = name; this.age = 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; } @Override public String toString() { return "User{name='" + name + "', age=" + age + '}'; } }
これは小規模なプロジェクトでは管理可能ですが、アプリケーションが拡大すると、定型文がすぐに膨大になる可能性があります。
解決策: ロンボク島
Lombok を使用すると、このような繰り返しコードをすべて回避できます。同じクラスがロンボク島でどのように見えるかは次のとおりです:
import lombok.Data; @Data public class User { private String name; private int age; }
Lombok はアノテーションを 1 つだけ使用して、ゲッター、セッター、toString、equals、および hashCode メソッドを生成し、コードをクリーンにして保守しやすくします。
Maven プロジェクトで Lombok を使用するには、次の依存関係を pom.xml に追加します。
<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.28</version> <scope>provided</scope> </dependency>
Gradle の場合:
compileOnly 'org.projectlombok:lombok:1.18.28' annotationProcessor 'org.projectlombok:lombok:1.18.28'
IDE に Lombok プラグインがインストールされていることを確認してください。 IntelliJ IDEA:
1. Go to Settings > Plugins. 2. Search for Lombok. 3. Install the Lombok plugin. 4. Enable annotation processing under Settings > Build, Execution, Deployment > Compiler > Annotation Processors.
Lombok は Java アノテーション プロセッサを使用して、Java 抽象構文ツリー (AST) と対話します。アノテーション プロセッサは、コンパイル プロセス中にコードの構造を分析し、場合によっては変更します。 Lombok のアノテーション プロセッサはこれを利用して、コードがコンパイルされる前に AST に直接挿入することで、特にゲッター、セッター、toString などのメソッドを生成します。
AST はコードの内部表現であり、ソースをコンパイラーが処理できる構造化ツリーに分割します。 Java コードを作成すると、各要素 (クラス、フィールド、メソッドなど) が AST 内のノードにマップされます。
Lombok のアノテーション プロセッサは、Lombok アノテーションを持つクラスに遭遇すると、AST ノードを変更してメソッドをツリーに直接追加します。これは、ボイラープレート メソッドがコンパイル中に生成され、ソース コードの一部ではないことを意味します。コードがコンパイルされるまでに、必要なすべてのメソッドが追加されているため、これらのメソッドはシームレスに動作します。
Lombok のアノテーションは、Java ソース コードの解析とバイトコードの生成の間のコンパイル段階で処理されます。段階的なプロセスは次のとおりです:
public class User { private String name; private int age; public User(String name, int age) { this.name = name; this.age = 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; } @Override public String toString() { return "User{name='" + name + "', age=" + age + '}'; } }
その結果、コードを実行すると、ゲッター、セッター、その他のメソッドは、コンパイル時に追加されたものであっても、元のソース コードの一部であるかのように表示されます。
これらのアノテーションはフィールドのゲッター メソッドとセッター メソッドを生成し、自分で記述する労力を効果的に節約します。
import lombok.Data; @Data public class User { private String name; private int age; }
@ToString は、デフォルトですべてのフィールドを含む toString メソッドを生成しますが、特定のフィールドを除外するオプションもあります。
<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.28</version> <scope>provided</scope> </dependency>
equals メソッドと hashCode メソッドを生成します。これらのメソッドは、オブジェクトを比較し、HashMap や HashSet などのコレクションで使用するために不可欠です。
compileOnly 'org.projectlombok:lombok:1.18.28' annotationProcessor 'org.projectlombok:lombok:1.18.28'
これらのアノテーションは、さまざまなパラメーター オプションを持つコンストラクターを生成します。
1. Go to Settings > Plugins. 2. Search for Lombok. 3. Install the Lombok plugin. 4. Enable annotation processing under Settings > Build, Execution, Deployment > Compiler > Annotation Processors.
1. AST Creation: The compiler reads the Java source code and generates the AST. 2. Annotation Processing: Lombok’s annotation processor scans the AST for Lombok annotations. 3. AST Manipulation: When an annotation like @Getter or @Setter is found, Lombok adds nodes to the AST to represent the corresponding methods. 4. Bytecode Generation: The modified AST is used to generate the final bytecode, which includes the methods added by Lombok.
@Getter、@Setter、@ToString、@EqualsAndHashCode、および @RequiredArgsConstructor を組み合わせます。
import lombok.Getter; import lombok.Setter; @Getter @Setter public class User { private String name; private int age; }
ビルダー パターンを実装します。これは、複数のパラメーターを持つ複雑なオブジェクトを構築する場合に特に便利です。
import lombok.ToString; @ToString(exclude = „password“) public class User { private String name; private int age; private String password; }
使用法:
import lombok.EqualsAndHashCode; @EqualsAndHashCode public class User { private String name; private int age; }
SLF4J Logger インスタンスを提供し、ロギングのセットアップを簡素化します。
• @NoArgsConstructor: No-argument constructor. • @AllArgsConstructor: Constructor with parameters for all fields. • @RequiredArgsConstructor: Constructor for fields marked final or @NonNull.
Lombok の機能は、ボイラープレート コードがサービス、リポジトリ、モデルに簡単に蓄積できる Spring Boot アプリケーションで特に役立ちます。 Spring Boot サービスで Lombok を使用する例を次に示します:
import lombok.NoArgsConstructor; import lombok.AllArgsConstructor; import lombok.RequiredArgsConstructor; @NoArgsConstructor @AllArgsConstructor @RequiredArgsConstructor public class User { private final String name; private int age; }
この例では:
import lombok.Data; @Data public class User { private String name; private int age; }
Lombok は Java 開発者にとって非常に貴重なツールです。これにより定型コードが大幅に削減され、クラスがクリーンに保たれ、生産性が向上します。アノテーション処理を使用して AST を操作することにより、Lombok はコンパイル中にメソッドを直接挿入し、機能を損なうことなくコードの簡潔さを確保します。
Lombok を Spring Boot と組み合わせると、開発がさらに効率化されます。 @Data、@Builder、@Slf4j などのアノテーションは、拡張やデバッグが簡単で、クリーンで保守しやすいコードを作成するための強力な方法を提供します。
Java で作業している場合、Lombok はツールキットに必須です。 Lombok で処理できるのに、必要以上のコードを記述する必要はありません。
以上がProject Lombok で Java を強化: コードを簡素化し、生産性を向上の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。