Lombokを使ってJavaBeansコードをシンプルに書く方法
Lombok(ロンボック)を使ってJavaBeansコードをシンプルに書く方法です。
Lombokとは、JavaBeans コードを書く際に、getter・setterメソッドをコード上に直接書かかなくて済みます。アノテーションを付けるだけで、 getter, setter, toString, equals などの繰り返しコードを自動生成してくれます。ソースコードが宣言的になることで、可読性が高まるのが特徴です。
ここでは Lombok(ロンボック)を使ってJavaBeansコードをシンプルに書く方法 を紹介します。
LombokをEclipseへインストール
公式サイトから lombok.jar をダウンロードします。
ダウンロードしたファイルを実行します。
Specify location から、インストールする eclipse を選択し、Install / Update ボタンを押下します。
下図のメッセージが出れば、インストールは終了です。
Eclipse を再起動しましょう。
Lombokを使ってみる
Lombokを使うには、pom.xml に下記を追記します。
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
次に JavaBean を用意して、クラスに Data アノテーションを付与します。
こちらのページを参考にサンプルアプリを作ってください。既にSpring Bootなどのサンプルアプリがある場合は、読み飛ばして結構です。
package springbootapp;
import lombok.Data;
@Data
public class LombokBean {
private String id;
private String name;
}
次にテスト用クラスを作成します。
package springbootapp;
public class LombokTest {
public static void main(String[] args) {
LombokBean bean = new LombokBean();
bean.setId("saka-en");
bean.setName("サカエン");
System.out.println(bean.getId());
System.out.println(bean.getName());
}
}
この時点でおわかりだと思いますが、JavaBean クラスには setter も getter も用意していないのにメソッドが使えています。これは楽チン^^
アノテーション | 説明 |
---|---|
Data | 対象クラスのメンバの getter/setter が自動生成され、toString, equals, hashCode もオーバーライドされる。 |
Value | 対象クラスの final化、メンバの final化、引数付きコンストラクタ、メンバの getter が自動生成され、toString, equals, hashCode もオーバーライドされる。setter は利用できない。 |
Getter | 対象クラスやメンバに getter が自動生成される。 |
Setter | 対象クラスやメンバに setter が自動生成される。 |
Builder | 対象クラスを生成するための Builderクラス が自動生成される。 |
NonNull | 対象クラスのメンバやメソッドの引数に指定することで null チェックが自動追加される。setter に null を設定すると NullPointerException がスローされる。 |
Accessors | fluent=trueの指定をすると、メンバのアクセッサの名称がメンバ名と同一になる。Data アノテーションなどと一緒にクラスへ付与する。 |
ToString | toString がオーバーライドされ、各メンバの値が表示されるようになる。exclude で対象のメンバ名を指定すると、出力対象から除外することができる。 |
Synchronized | 対象クラスのメンバに指定すると synchronized ブロックが生成される。 |
上の表は、私がよく使うものだけ抜粋しています。詳しくは Lombok公式サイト を確認ください。
まとめ
Lombok(ロンボック)を使ってJavaBeansコードをシンプルに書く方法を紹介しました。
正直、getter / setter ってメンドクサイですよねー。Eclipse の機能に「getter および setter の生成」という機能がありますが、これもいちいちメンドクサイと思っていたところです。おまけにソースも長くなって可読性が悪いとあって、正直好きじゃありませんでした。
アノテーションを一行書くだけで適切にコード生成してくれるのは魅力的ですね。
皆さんも使ってみてください。
おつかれさまでした。