๋กฌ๋ณต(Lombok)์ ๋ฐ์ดํฐ ํด๋์ค๋ฅผ ์์ฑํ ๋ ๋ฐ๋ณต์ ์ผ๋ก ์ฌ์ฉํ๋ ๋ฉ์๋๋ฅผ ์ ๋
ธํ
์ด์
์ผ๋ก ๋์ฒดํ๋ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ค.
์ ๋
ธํ
์ด์
๊ธฐ๋ฐ์ผ๋ก ์ฝ๋๋ฅผ ์๋์ผ๋ก ์์ฑํด์ฃผ๋ฏ๋ก ๋ฐ๋ณต๋๋ ์ฝ๋๋ฅผ ์๋ตํ ์ ์๋ค๋ ์ฅ์ ์ด ์๋ค.
๋กฌ๋ณต ์ ์ฉ
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Member {
private String memberId;
private int money;
}
public class Member {
private String memberId;
private int money;
public Member(String memberId, int money) {
this.memberId = memberId;
this.money = money;
}
public Member() {
}
public String getMemberId() {
return this.memberId;
}
public int getMoney() {
return this.money;
}
public void setMemberId(String memberId) {
this.memberId = memberId;
}
public void setMoney(int money) {
this.money = money;
}
public boolean equals(final Object o) {
if (o == this) return true;
if (!(o instanceof Member)) return false;
final Member other = (Member) o;
if (!other.canEqual((Object) this)) return false;
final Object this$memberId = this.getMemberId();
final Object other$memberId = other.getMemberId();
if (this$memberId == null ? other$memberId != null : !this$memberId.equals(other$memberId)) return false;
if (this.getMoney() != other.getMoney()) return false;
return true;
}
protected boolean canEqual(final Object other) {
return other instanceof Member;
}
public int hashCode() {
final int PRIME = 59;
int result = 1;
final Object $memberId = this.getMemberId();
result = result * PRIME + ($memberId == null ? 43 : $memberId.hashCode());
result = result * PRIME + this.getMoney();
return result;
}
public String toString() {
return "Member(memberId=" + this.getMemberId() + ", money=" + this.getMoney() + ")";
}
}
์ฒซ ๋ฒ์งธ ์ฝ๋๋ ๋กฌ๋ณต์ ์ ์ฉํ ๊ฒ์ด๊ณ , ๋ ๋ฒ์งธ ์ฝ๋๋ ๋กฌ๋ณต์ ์ ๋ ธํ ์ด์ ์ ์ฝ๋๋ก ํ์ด์ด ๊ฒ์ด๋ค. ํ ๋์ ๋ด๋ ์ฝ๋์ ๊ธธ์ด๊ฐ ์๋นํ ์ฐจ์ด๋๋ ๊ฒ์ ํ์ธํด๋ณผ ์ ์๋ค.
๋กฌ๋ณต์ ์ฃผ์ ์ ๋ ธํ ์ด์
๋กฌ๋ณต์ ๋ค์ํ ์ ๋ ธํ ์ด์ ์ ์ ๊ณตํ๊ณ ์๋๋ฐ, ๊ทธ ์ค์์ ๋ง์ด ์ฌ์ฉํ๋ ์ ๋ ธํ ์ด์ ์ ์๋์ ๊ฐ๋ค.
@Getter, @Setter
- ํด๋์ค์ ์ ์ธ๋์ด ์๋ ํ๋์ ๋ํ getter/setter ๋ฉ์๋๋ฅผ ์๋ ์์ฑ
์์ฑ์ ์๋ ์์ฑ ์ ๋ ธํ ์ด์
- @NoArgsConstructor: ๋งค๊ฐ๋ณ์๊ฐ ์๋ ์์ฑ์๋ฅผ ์๋ ์์ฑ
- @AllArgsConstructor: ๋ชจ๋ ํ๋๋ฅผ ๋งค๊ฐ๋ณ์๋ก ๊ฐ๋ ์์ฑ์๋ฅผ ์๋ ์์ฑ
- @RequiredArgsConstructor: ํ๋ ์ค final์ด๋ @NotNull์ด ์ค์ ๋ ๋ณ์๋ฅผ ๋งค๊ฐ๋ณ์๋ก ๊ฐ๋ ์์ฑ์๋ฅผ ์๋ ์์ฑ
@ToString
toString()
๋ฉ์๋๋ฅผ ์์ฑํ๋ ์ ๋ ธํ ์ด์ ์ผ๋ก, ํ๋์ ๊ฐ์ ๋ฌธ์์ด๋ก ์กฐํฉํด์ ๋ฆฌํด- ์จ๊ฒจ์ผ ํ ์ ๋ณด๋
exclude
์์ฑ์ ์ฌ์ฉํด ํน์ ํ๋๋ฅผ ์๋ ์์ฑ์์ ์ ์ธํ ์ ์์.
@EqualsAndHashCode
- ๊ฐ์ฒด์ ๋๋ฑ์ฑ(Equality)๊ณผ ๋์ผ์ฑ(Identity)์ ๋น๊ตํ๋ ์ฐ์ฐ ๋ฉ์๋ ์์ฑ
- equals๋ ๋ ๊ฐ์ฒด์ ๋ด์ฉ์ด ๊ฐ์์ง ๋๋ฑ์ฑ์ ๋น๊ต, hashcode๋ ๋ ๊ฐ์ฒด๊ฐ ๊ฐ์ ๊ฐ์ฒด์ธ์ง ๋์ผ์ฑ์ ๋น๊ต
- ๋ถ๋ชจ ํด๋์ค๋ฅผ ์์๋ฐ์ ๋ถ๋ชจ ํด๋์ค์ ํ๋๊น์ง ๋น๊ตํด์ผ ํ๋ค๋ฉด,
callSuper
์์ฑ์ true๋ก ์ค์ (๊ธฐ๋ณธ ๊ฐ์ false)
@Data
- @Getter/@Setter, @RequiredArgsConstructor, @ToString, @EqualsAndHashCode๋ฅผ ๋ชจ๋ ํฌ๊ดํ๋ ์ ๋ ธํ ์ด์