SpringBootでLombokを使用する準備
build.gradleに下記を追加する。
dependencies {
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
}
configurations {
compileOnly {
extendsFrom annotationProcessor
}
}
SpringBootでLombokを使用してみる
オブジェクト
package com.springhack.okozukaisystem.domain;
import lombok.AllArgsConstructor;
import lombok.Getter;
import java.time.LocalDate;
@AllArgsConstructor
@Getter
public class Child {
private String name;
private LocalDate birthday;
}
使用例1 @AllArgsConstructorを付与したため、完全コンストラクタを呼べる。
var hiroto = new Child("ひろと", LocalDate.of(2012, 1, 31));
var haruki = new Child("はるき", LocalDate.of(2015, 9, 21));
使用例2 @Getterを付与したため、getNameとgetBirthdayが生成され、Thymeleafで参照できるようになっている。
<tr th:each="child: ${children}">
<td th:text="${child.name}"></td>
<td th:text="${child.birthday}"></td>
<td>TODO</td>
<th><button onclick="location.href='/children/edit?id=123'">編集</button><button onclick="location.href='/children/remove?id=123'">削除</button></th>
</tr>
Lombok使用上の注意
@Dataは極力使わない。
@Setterも極力使わない。
オブジェクトをimmutableに保つには、
・@AllArgsConstructor
・@Getter
を使うのが基本です。