こんにちは。ゆうせいです。
今回はSpring Boot開発で必須ともいえる便利ライブラリ「Lombok」について、Spring初心者向けにわかりやすく紹介します!
「Javaのコードって長いし、getterとか書くの面倒すぎ…」
「DTOやEntityが見づらい!」
…そんなあなたを救ってくれるのがLombokです。
Lombokとは?
Lombok(ロンボック)は、Javaの冗長なコード(ボイラープレート)を削減してくれるライブラリです。
特にSpring Boot開発で使われる以下のような場面で役立ちます:
- DTOやEntityの定義
- サービスクラスのDI(依存性注入)
- コントローラーのログ出力
導入方法(Spring Boot向け)
Spring Boot + Mavenの場合
pom.xml
に次の依存関係を追加します。
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>最新バージョン</version>
<scope>provided</scope>
</dependency>
※最新版は 公式サイト で確認してください
比較してみよう:Lombokなし vs Lombokあり
Lombokなし(冗長なコード)
public class Person {
private String name;
private int 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 "Person{name='" + name + "', age=" + age + "}";
}
}
Lombokあり(超シンプル!)
import lombok.Data;
@Data
public class Person {
private String name;
private int age;
}
@Data
アノテーション1つでgetter
,setter
,toString
,equals
,hashCode
を自動生成!
主なアノテーション一覧(用途別)
アノテーション | 生成されるもの |
---|---|
@Getter / @Setter | フィールドのgetter/setter |
@ToString | toString() |
@EqualsAndHashCode | equals() と hashCode() |
@Data | 上記すべて(まとめて生成) |
@AllArgsConstructor | 全フィールドを引数に持つコンストラクタ |
@NoArgsConstructor | 引数なしコンストラクタ |
@RequiredArgsConstructor | final フィールドだけを使うコンストラクタ |
@Builder | ビルダーパターン(DTOなどで便利) |
@Slf4j | ロガー(log.info() が使えるようになる) |
Spring Bootでの活用例①:DTOやEntity
import lombok.Data;
@Data
public class UserDto {
private String username;
private String email;
private int age;
}
- コントローラーで受け取るリクエストボディのクラスなどで便利!
Spring Bootでの活用例②:サービス層のコンストラクタ注入
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
@Service
@RequiredArgsConstructor
public class UserService {
private final UserRepository userRepository;
// コンストラクタ自動生成される!
}
Spring Bootでの活用例③:ログ出力(@Slf4j
)
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;
@RestController
@Slf4j
public class SampleController {
@GetMapping("/hello")
public String hello() {
log.info("Hello endpoint called");
return "Hello!";
}
}
よくある注意点
注意点 | 説明 |
---|---|
@Data は便利すぎる反面、不要なgetter/setterができることもある | |
特定のフィールドだけgetterをつけたいときは @Getter を個別に使う | |
final フィールドと @NoArgsConstructor の併用はできない(エラーになる) | |
Eclipse/IntelliJのLombokプラグインは必須です |
まとめ
機能 | Lombokでの書き方 |
---|---|
Getter/Setter | @Getter / @Setter または @Data |
equals/toString/hashCode | @EqualsAndHashCode , @ToString , または @Data |
コンストラクタ自動生成 | @NoArgsConstructor , @AllArgsConstructor |
DIに使うコンストラクタ | @RequiredArgsConstructor |
ログ出力 | @Slf4j |
今後の学習の指針
- Spring BootでのDTO、Entity、ServiceクラスへのLombok適用練習
@Builder
を使った柔軟なオブジェクト生成パターンを学ぶ- テストコードを書くとき、Lombokが何をしているのか明示的に確認してみる
- 「Lombokなしで全部手で書くとどうなるか?」も一度体験してみよう
Lombokは、読みやすく、ミスの少ないコードを素早く書くための開発支援ツールです。
うまく使えば、Spring Boot開発の生産性が大きく向上しますよ!