lombokというライブラリを使うと、JavaBeanクラスにおいて、アノテーション付与するだけで、getterメソッド・setterメソッドを利用することができるため、JavaBeanクラスのソースコードを大幅に短くすることができる。
今回は、Eclipse上のJSFプロジェクトでlombokを利用してみたので、その手順とサンプルプログラムを共有する。
前提条件
以下の記事の実装が完了していること。
lombokの導入と実装
Eclipse上のJSFプロジェクトで、lombokを利用するための手順とサンプルプログラム・実行結果は、以下の通り。
1) Eclipseが起動している場合は終了する。
2) lombok-(バージョン).jarファイルを探し、ダブルクリックする。
下図の場合、「C:\Users\(ユーザー名)\.gradle\caches\modules-(X)\files-(X.X)」下に、Gradleでダウンロードされたファイルが配置されているので、そこから「lombok-(バージョン).jar」を探している。

あるいは、下記サイトから「lombok.jar」を取得してもよい。
https://projectlombok.org/download

3) 上記「lombok-1.18.10.jar」をダブルクリックすると、下記ダイアログが出るため「OK」ボタンを押下する。

4)「Specify location …」ボタンを押下し、Eclipseの起動exe(eclipse.exe)を選択する。


5)「IDEs」に先ほど設定したexeファイルが選択されていることを確認後、「Install / Update」ボタンを押下する。

6) インストールが完了すると、下記ダイアログが表示されるので、「Quit Installer」を押下する。

7) 以下のように、「eclipse.ini」の最終行に「-javaagent:C:\work\pleiades\pleiades\eclipse\lombok.jar」が追記され、「lombok.jar」が追加されていることが確認できる。


8) JSFプロジェクトを作成済のEclipseを起動し、プロジェクトを選択し右クリックし、「ビルド・パス」から「外部アーカイブの追加」を選択する。

9) 7)で追加された「lombok.jar」を選択し、「開く」ボタンを押下する。

10) 以下のように、「参照ライブラリー」に「lombok.jar」が追加されていることが確認できる。

11) 以下のように、lombokのクラスをインポートできることが確認できる。

12) InputFormActionクラスを、以下のように、@Data、@ToStringアノテーションを付与し、Getter/Setter/toStringメソッドを削除する修正を行う。
package faces;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.enterprise.context.SessionScoped;
import javax.faces.model.SelectItem;
import javax.inject.Named;
import common.CommonUtil;
import lombok.Data;
import lombok.ToString;
/**
* 画面のフォーム値と画面遷移メソッドを定義.
*/
// @Namedアノテーションは、JSFのXHTMLファイルから#{inputFormAction}で
// Javaクラスを参照できるようにしている(→バッキングビーン)
// @SessionScopedアノテーションは、このバッキングビーンの生存期間を
// セッションに設定している
@Named(value="inputFormAction")
@SessionScoped
// 以下はLombokのアノテーション
//「@Data」アノテーションを付与すると、このクラス内の全フィールドに対する
// Getterメソッド・Setterメソッドにアクセスができる
@Data
//「@ToString」アノテーションを用いて、exclude属性で指定した項目以外の値を、
// toStringメソッド呼出時に出力することができる
@ToString(exclude={"birthMonthItems","birthDayItems","sexItems"})
public class InputFormAction implements Serializable {
// シリアルバージョンUID
private static final long serialVersionUID = 7283339629129432007L;
/** 名前 */
private String name;
/** 生年月日_年 */
private String birthYear;
/** 生年月日_月 */
private String birthMonth;
/** 生年月日_日 */
private String birthDay;
/** 性別 */
private String sex;
/** 性別(ラベル) */
private String sexLabel;
/** メモ */
private String memo;
/** 確認チェック */
private String checked;
/** 生年月日_月(選択リスト) */
private List<SelectItem> birthMonthItems;
/** 生年月日_日(選択リスト) */
private List<SelectItem> birthDayItems;
/** 性別(選択リスト) */
private List<SelectItem> sexItems;
/**
* コンストラクタ生成時に選択リストの値を設定.
*/
public InputFormAction(){
// 生年月日_月(選択リスト)
birthMonthItems = new ArrayList<SelectItem>();
birthMonthItems.add(new SelectItem("", ""));
for(Integer i = 1; i <= 12; i++){
birthMonthItems.add(new SelectItem(String.valueOf(i), String.valueOf(i)));
}
// 生年月日_日(選択リスト)
birthDayItems = new ArrayList<SelectItem>();
birthDayItems.add(new SelectItem("", ""));
for(Integer i = 1; i <= 31; i++){
birthDayItems.add(new SelectItem(String.valueOf(i), String.valueOf(i)));
}
// 性別(選択リスト)
sexItems = new ArrayList<SelectItem>();
sexItems.add(new SelectItem(String.valueOf(1),"男"));
sexItems.add(new SelectItem(String.valueOf(2),"女"));
}
/**
* 確認画面への遷移.
* @return 確認画面へのパス
*/
public String confirm(){
// 性別(ラベル)を設定
if(!CommonUtil.isBlank(sex)){
this.setSexLabel(this.getSexItems().get(
Integer.parseInt(this.getSex())-1).getLabel());
}
// Formに設定された値を出力
System.out.println(this.toString());
// 確認画面に遷移、ただし、遷移先URLを正しく表示し画面遷移を安定させるため、
// ?faces-redirect=trueを付与し、フォワードからリダイレクトに変更している
return "confirm.xhtml?faces-redirect=true";
}
/**
* 入力画面に戻る.
* @return 入力画面へのパス
*/
public String back(){
// 入力画面に戻る
return "input.xhtml?faces-redirect=true";
}
/**
* 完了画面への遷移.
* @return 完了画面へのパス
*/
public String send(){
// 確認画面に表示された値を出力
System.out.println(this.toString());
// 完了画面に遷移
return "complete.xhtml?faces-redirect=true";
}
}13) 実行結果は、以下の記事の「サンプルプログラムの実行結果」と同じ結果となる。
コンソールログ出力例は以下の通りで、上記記事と同等の内容が出力されていることが確認できる。

要点まとめ
- lombokというライブラリを使うと、JavaBeanクラスにおいて、アノテーション付与するだけで、getterメソッド・setterメソッドを利用することができるため、JavaBeanクラスのソースコードを大幅に短くすることができる。
- あらかじめEclipse上にlombokをインストールしておくことで、Eclipse上でlombokを利用できる。





