Spring Boot

Lombokを使う

コードをスッキリさせてくれる Lombok。Getter/Setter の自動生成だけでなく、@Slf4j を使ったログ出力まで含めると、もう手放せないツールの一つです。ただ一度設定すると忘れてしまい(忘れていても使えてしまう)次に設定する際また悩んでしまうのでここにまとめておきます。

ここでの環境はMaven+Spring Boot 3.xを前提としています。

Eclipse本体にLombokをインストール

Lombokはeclipseの新規ソフトウェアのインストールや、マーケットプレイスからはインストールできません。Lombokの正体は、Eclipseのプラグインではなく、Javaの起動引数に指定される javaagent なので以下のような作業でのインストールとなります。

本家サイトからjarを落としてjarを実行すればインストール画面が表示されます。そこでインストール対象のeclipseを選択するだけでインストール/アップデート作業は終了です。あとはeclipseを再起動することで反映されます。

Download
logback.xmlを用意する

Lombok を使う際に logback.xml は必須ではありませんが、準備したほうがいいです。Lombok の @Slf4j を使うと、内部的に slf4j というログの窓口を利用します。その「実際の出力先やフォーマット」を決めているのが Logback です。 設定ファイル(logback-spring.xml)がない場合、Spring Boot は 「デフォルト設定」 で動きます。以下はMaven+Spring Boot v.3.2 における設定例となります。

pom.xml
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <optional>true</optional>
</dependency>
作成例(src/main/resources/logback-spring.xml)

以下はpring Boot の標準的なログの見た目(フォーマット)の読み込みと、ログを「コンソール(画面)」に出力するための装置(Appender)を読み込みこんだ上で、どのレベルのログを、どこに出すかを定義しています。

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <include resource="org/springframework/boot/logging/logback/defaults.xml" />
    <include resource="org/springframework/boot/logging/logback/console-appender.xml" />

    <root level="INFO">
        <appender-ref ref="CONSOLE" />
    </root>
</configuration>

こんなところが便利

Lombokなしではクラスごとにわざわざ以下のような長い一行を、コピペ&クラス名書き換えで面倒でしたよね。

public class MyController {
    // クラス名を間違えないように気をつけて書く必要がある
    private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(MyController.class);

    public void test() {
        log.info("ログ出力テスト");
    }
}

それがこの通り。クラス毎に書き換える必要がなくなるのはいいです。

import lombok.extern.slf4j.Slf4j;

@Slf4j  // ←これだけ!
public class MyController {
    public void test() {
        log.info("ログ出力テスト"); // 「log」という名前の変数が自動で使える
    }
}
スポンサーリンク
タイトルとURLをコピーしました