こんにちは。ゆうせいです。

今回は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
@ToStringtoString()
@EqualsAndHashCodeequals()hashCode()
@Data上記すべて(まとめて生成)
@AllArgsConstructor全フィールドを引数に持つコンストラクタ
@NoArgsConstructor引数なしコンストラクタ
@RequiredArgsConstructorfinal フィールドだけを使うコンストラクタ
@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開発の生産性が大きく向上しますよ!

最後までお読みいただきありがとうございます。