SpringにLombokを利用するにあたり調べたことをメモする
ライブラリとして追加する
pom.xmlへ以下のように指定する
<dependencies>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.8</version>
<scope>provided</scope>
</dependency>
</dependencies>
参考
利用上の注意事項
@Dataを使うのではなく、必要な分だけ使うこと
(追記:
「@Getter, @Setter, @ToString, @EqualsAndHashCode, @RequiredArgsConstructor」をまとめて付与することになるため。そこを理解した上で利用するのであれば何の問題もありません。
)
@toStringを相互関係のあるクラスで利用する際には無限ループするので、exclude属性をつけて回避すること
参考
Lombok 使い方メモ
Spring BootでLombokを使ってみたら楽だった
開発環境の構築(Mac)
前提
-
Mac:macOS Sierra 10.12.5
-
Eclipse:Eclipse Java EE IDE for Web Developers.
Oxygen Release (4.7.0) -
Lombok:1.16.18
-
MacではLombokのインストーラがうまく動作しなかった
手順
- Lombokを公式からダウンロード
https://projectlombok.org/download - ダウンロードしてきたファイル(lombok.jar)をEclipseのインストール場所に設置
場所:/Applications/Eclipse_4.7.0.app/Contents//MacOS - Eclipseの設定ファイルにパスを記述
設定ファイル:/Applications/Eclipse_4.7.0.app/Contents/Eclipse/eclipse.ini
記述内容:下記を最下部へ追加
-javaagent:lombok.jar
-Xbootclasspath/a:lombok.jar
参考
eclipse mars/neon on mac で lombok インストーラが動かない時の対処法
疑問
pom.xmlでのscopeの指定について
scopeにprovidedを指定している。
理由としては、Lombokはコンパイル時にソースを解析して定型コードを生成し
それをコンパイラに渡すことで機能を実現しており、生成後は必要がなくなるため。
詳しくは以下がとても参考になりました。
参考
追記(2019/9/6)
プロジェクトをMavenビルドしようとしたところ下記のエラーが表示されました。
java.lang.ClassNotFoundException: com.sun.tools.javac.code.TypeTags
調べたところBugのようで既に対策済みでしたので、1.16.22指定すればエラーは解消されました。
JDK10で発生するとありましたが、1.8でも同様に発生しました。
Github:lombok
pom.xmlのバージョンを1.16.18
から1.18.8
へ変更しました。