5.Lombok

フロイトフロイト
1 min read

1.Lombokとは?

先に簡単に言うと、Javaにおいての特定のコードの自動完成に関するライブラリのことを言い、クラスのフィールドのアノテーションだけで以下のをコンパイル時に自動生成(ハイドコードとして生成されるので、水面上では見えない。)して、ソースコードを劇的にスリム化する。

  • GetterSetter

  • コンストラクタ

  • toString()equals()hashCode()

  • ビルダーパターンのメソッド

2.Lombokの特徴

  1. GetterSetterの自動生成
    @Getter@Setterというアノテーションを作成するだけでフィールドの取得、設定メソッドが自動的に作成される。

  2. コンストラクタ、ビルダーサポート
    @NoArgsConstructor@AllArgsConstructor を作成することでコンストラクタを生成。
    @Builderで柔軟なインスタンス生成メソッドをたった一行で用意できる。

  3. ボイラープレート削減・コンパイル時処理

    繰り返しコードを大幅に省略でき、ビルドの時に自動的にgetXxx()setXxx()やコンストラクタ、定型メソッドをソースコード上には一切の作成なくても埋められる。
    生成されたメソッドは「普通のJavaメソッド」として .class に組み込まれるから、実行時にLombokが何か追加的な作業を行うことはない。

3.Lombokのインストール・適用

https://projectlombok.org/download

Lombokの公式ホームページに接続して、「Lombok」をダウンロードして、実行する。

もし、実行ができず、圧縮ファイルとして扱われると、CMDを利用して実行することができる。まず、CMDを実行して、「Lombok」がダウンロードされて経路まで行き、java -jar lombok.jarのコマンドを実行することも可能。

実行するとこのような設置ウィンドウが現れる。本来は自動的にEclipseの場所を検知してくれるが、このように検知できない場合は、「Eclipse.exe」が位置する経路まを「Specify location」で選択することで反映される。その後、「Install/Update」でインストール・アップデートができる。

その後、Eclipseを起動して、build.gradleを開く。

dependencies {
  compileOnly 'org.projectlombok:lombok'
  annotationProcessor 'org.projectlombok:lombok'
}

そして、dependenciesボックスにこのように依存を追加して、「Refresh Gradle Project」でリフレッシュする。こうすると、Lombokの機能を使えるようになる。

4.機能確認

package 「パッケージ名」;

public class UserDto {

}

クラスファイルUserDto.javaを生成してまずは@Dataと記入して、Ctrl + 1でクイックフィックスする。

すると、このように「Import ‘Data’(lombok)」によりimport文が生成されるのが確認できる。

package 「パッケージ名」;

import lombok.Data;

@Data
public class UserDto {

}

続いて、アノテーションとimport文とメソッドを追加する。

package 「パッケージ名」;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class UserDto {

}

続いて、フィールドを埋める。

package 「パッケージ名」;

import lombok.Data;
import lombok.Builder;
import lombok.NoArgsConstructor;
import lombok.AllArgsConstructor;

@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class UserDto {
    private Long id;
    private String name;
    private String email;
}

続いて、コントローラーファイルを利用する。従来のを利用してもいいし、新しく作ってもいいが、ここでは作ってみる。

package 「パッケージ名」;

import 「UserDto.javaのパッケージ名」.UserDto;

public class UserDtoController {

}

そしてアノテーションとimport文、メソッドを追加する。

このように自動完成機能を流用してもいい。

package 「パッケージ名」;

import 「UserDto.javaのパッケージ名」.UserDto;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class UserController {

    @GetMapping("/api/user")
    public UserDto getUser() {
        // LombokのBuilderでインスタンスを組み立て
        return UserDto.builder()
                      .id(100L)
                      .name("太郎")
                      .email("taro@example.com")
                      .build();
    }
}

これを起動してみて、ブラウザー上以下のように表示されるかを確認する。

使用するブラウザーによって形は違うようになりがちだが、このパラメーターが表示されると問題ない。

ちなみに、Lombokを入れないと、該当アノテーションを使えなくなるので、以下のようになる。

5.まとめ

Lombokは追加のアノテーションを導入させ、ハイドコード(水面上では見えないコード)に自動生成させる有用なDependencyである。当然、欠点もあるが、有用なのは変わらない。

0
Subscribe to my newsletter

Read articles from フロイト directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

フロイト
フロイト