こんにちは。ゆうせいです。
今回は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開発の生産性が大きく向上しますよ!