5.Lombok

1.Lombokとは?
先に簡単に言うと、Javaにおいての特定のコードの自動完成に関するライブラリのことを言い、クラスのフィールドのアノテーションだけで以下のをコンパイル時に自動生成(ハイドコードとして生成されるので、水面上では見えない。)して、ソースコードを劇的にスリム化する。
Getter
、Setter
コンストラクタ
toString()
、equals()
、hashCode()
ビルダーパターンのメソッド
2.Lombokの特徴
Getter
、Setter
の自動生成
@Getter
、@Setter
というアノテーションを作成するだけでフィールドの取得、設定メソッドが自動的に作成される。コンストラクタ、ビルダーサポート
@NoArgsConstructor
、@AllArgsConstructor
を作成することでコンストラクタを生成。
@Builder
で柔軟なインスタンス生成メソッドをたった一行で用意できる。ボイラープレート削減・コンパイル時処理
繰り返しコードを大幅に省略でき、ビルドの時に自動的に
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である。当然、欠点もあるが、有用なのは変わらない。
Subscribe to my newsletter
Read articles from フロイト directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by
