13
22

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

LombokをSpringで利用するには

Last updated at Posted at 2017-10-16

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のインストーラがうまく動作しなかった

手順

  1. Lombokを公式からダウンロード
    https://projectlombok.org/download
  2. ダウンロードしてきたファイル(lombok.jar)をEclipseのインストール場所に設置
    場所:/Applications/Eclipse_4.7.0.app/Contents//MacOS
  3. 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はコンパイル時にソースを解析して定型コードを生成し
それをコンパイラに渡すことで機能を実現しており、生成後は必要がなくなるため。
詳しくは以下がとても参考になりました。

参考

誰も教えてくれなかった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へ変更しました。

13
22
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
22

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?