コードをスッキリさせてくれる Lombok。Getter/Setter の自動生成だけでなく、@Slf4j を使ったログ出力まで含めると、もう手放せないツールの一つです。ただ一度設定すると忘れてしまい(忘れていても使えてしまう)次に設定する際また悩んでしまうのでここにまとめておきます。
ここでの環境はMaven+Spring Boot 3.xを前提としています。
Eclipse本体にLombokをインストール
Lombokはeclipseの新規ソフトウェアのインストールや、マーケットプレイスからはインストールできません。Lombokの正体は、Eclipseのプラグインではなく、Javaの起動引数に指定される javaagent なので以下のような作業でのインストールとなります。
本家サイトからjarを落としてjarを実行すればインストール画面が表示されます。そこでインストール対象のeclipseを選択するだけでインストール/アップデート作業は終了です。あとはeclipseを再起動することで反映されます。
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」という名前の変数が自動で使える
}
}
