目次
Lombokで劇的にコードを短縮!
フォームクラス作成が10倍楽になる方法
Lombokとは?
LombokはJava向けのアノテーションベースライブラリです。冗長で繰り返しの多いコード(getter/setter、toString、equals、hashCodeなど)を削減し、コードの可読性を劇的に向上させることができます。
驚愕の事実
通常90行必要なコードが、Lombokを使えばたった9行で書けます!
90行
従来の書き方
9行
Lombok使用時
90%
コード削減率
実際のコード比較
従来の書き方(90行)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
public class ReviewRegistFormWithoutLombok { private Integer restaurantId; private String userId; private java.sql.Date visitDate; private Integer rating; private String comment; // デフォルトコンストラクタ public ReviewRegistFormWithoutLombok() { } // getter メソッド(5個) public Integer getRestaurantId() { return restaurantId; } public String getUserId() { return userId; } public java.sql.Date getVisitDate() { return visitDate; } public Integer getRating() { return rating; } public String getComment() { return comment; } // setter メソッド(5個) public void setRestaurantId(Integer restaurantId) { this.restaurantId = restaurantId; } public void setUserId(String userId) { this.userId = userId; } public void setVisitDate(java.sql.Date visitDate) { this.visitDate = visitDate; } public void setRating(Integer rating) { this.rating = rating; } public void setComment(String comment) { this.comment = comment; } // toString, equals, hashCode メソッドも必要... // (さらに30行程度続く) } |
Lombok使用時(9行)
1 2 3 4 5 6 7 8 9 10 |
import lombok.Data; @Data public class ReviewRegistFormWithLombok { private Integer restaurantId; private String userId; private java.sql.Date visitDate; private Integer rating; private String comment; } |
Lombokのメリット
- コード量の大幅削減 – 90%以上のコード削減が可能
- 可読性の向上 – 本質的な部分だけに集中できる
- 保守性の向上 – フィールド追加時の修正忘れが防げる
- 開発効率アップ – IDE(Eclipse等)での自動生成が不要
- バグの削減 – 定型的なコードの記述ミスがなくなる
主要なアノテーション
@Data
getter、setter、toString、equals、hashCodeを一括生成
@Getter
全フィールドのgetterメソッドを生成
@Setter
全フィールドのsetterメソッドを生成
@ToString
toStringメソッドを自動生成
@NoArgsConstructor
引数なしコンストラクタを生成
@AllArgsConstructor
全フィールドを引数に取るコンストラクタを生成
Spring Bootでの使用方法
1. 依存関係の追加
1 2 3 4 5 6 7 8 9 |
Spring Initializrでプロジェクト作成時に 「Lombok」にチェックを入れる または、pom.xmlに以下を追加: <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> |
2. フォームクラスの作成
1 2 3 4 5 6 7 8 9 10 11 12 13 |
package com.example.demo.form; import lombok.Data; import java.sql.Date; @Data public class ReviewRegistForm { private Integer restaurantId; // 店舗ID private String userId; // 利用者ID private Date visitDate; // 来店日 private Integer rating; // 評価(1-5) private String comment; // コメント } |
3. コントローラーでの使用
1 2 3 4 5 6 7 8 9 10 11 12 |
@Controller public class ReviewController { @PostMapping("/regist/review") public String registReview(@ModelAttribute ReviewRegistForm form) { // フォームオブジェクトに自動でリクエストパラメータが設定される System.out.println(form.toString()); // 自動的にモデルにも格納される(属性名:reviewRegistForm) return "confirm-regist-review"; } } |
実際のフォーム処理の流れ
- HTMLフォームでname属性をフィールド名に合わせる
- POSTリクエストでデータを送信
- Spring MVCが自動的にフォームオブジェクトにバインド
- @ModelAttributeでモデルにも自動格納
- テンプレートでモデルのデータを表示
まとめ
Lombokを使うことで、Spring Bootでのフォームクラス作成が劇的に簡単になります。
コード量の削減、可読性の向上、保守性の向上など、多くのメリットがあります。
ぜひあなたのプロジェクトでも活用してみてください!
参考動画
コメントを残す