lombok-data-and-value-annotations
#java #lombok #tip
Lombokμ @Dataμ @Value μ΄λ
Έν
μ΄μ
1. Lombokμ΄λ?
Lombokμ Java μ½λμμ λ°λ³΅μ μΌλ‘ μμ±ν΄μΌ νλ 보μΌλ¬νλ μ΄νΈ μ½λ(getter, setter, toString λ±)λ₯Ό μ€μ¬μ£Όλ λΌμ΄λΈλ¬λ¦¬
μ»΄νμΌ μμ μ μ΄λ Έν μ΄μ μ κΈ°λ°μΌλ‘ νμν μ½λλ₯Ό μλ μμ±
2. @Data μ΄λ
Έν
μ΄μ
2.1 κ°μ
@Data
λ λ€μ μ΄λ Έν μ΄μ λ€μ΄ ν©μ³μ§ λ³΅ν© μ΄λ Έν μ΄μ @Getter
: λͺ¨λ νλμ λν getter λ©μλ μμ±@Setter
: λͺ¨λ non-final νλμ λν setter λ©μλ μμ±@ToString
: toString() λ©μλ μμ±@EqualsAndHashCode
: equals()μ hashCode() λ©μλ μμ±@RequiredArgsConstructor
: νμ νλ(final, @NonNull)λ§ νλΌλ―Έν°λ‘ λ°λ μμ±μ μμ±
2.2 μμ
2.3 μ£Όμμ¬ν
μν μ°Έμ‘°
toString()
μ΄λequals()
/hashCode()
μμ λ€λ₯Έ κ°μ²΄λ₯Ό μ°Έμ‘°νλ©΄ 무ν μ¬κ·κ° λ°μν μ μμ.μ΄ κ²½μ°
@ToString.Exclude
λ@EqualsAndHashCode.Exclude
μ¬μ©
μμ κ΄κ³
equals()
μhashCode()
κ° μμ κ΄κ³μμ λ¬Έμ λ°μ κ°λ₯
3. @Value μ΄λ
Έν
μ΄μ
3.1 κ°μ
@Value
λ λΆλ³(immutable) κ°μ²΄λ₯Ό μμ±νκΈ° μν μ΄λ Έν μ΄μ ν΄λμ€λ₯Ό μλμΌλ‘
final
λ‘ λ§λ¦λͺ¨λ νλλ₯Ό μλμΌλ‘
private final
λ‘ λ§λ¦@Getter
μ μ©@ToString
μ μ©@EqualsAndHashCode
μ μ©@AllArgsConstructor
μ μ© (λͺ¨λ νλλ₯Ό μ΄κΈ°ννλ μμ±μ μμ±)Setter λ©μλλ μμ±νμ§ μμ
3.2 μμ
3.3 μ£Όμμ¬ν
컬λ μ μ λΆλ³μ±
λ΄λΆ 컬λ μ μ΄λ κ°λ³ κ°μ²΄κ° μλ κ²½μ° ν΄λΉ κ°μ²΄μ λΆλ³μ±μ 보μ₯λμ§ μμ.
μΆκ°μ μΈ λ°©μ΄μ λ³΅μ¬ νμ
μμ λΆκ°
ν΄λμ€κ° finalμ΄λ―λ‘ μμμ΄ λΆκ°λ₯ν¨
4. @Dataμ @Valueμ ν΅μ¬ μ°¨μ΄μ
κ°μ²΄ νμ
κ°λ³(mutable)
λΆλ³(immutable)
ν΄λμ€ final
μλμ€
μ
νλ final
λͺ μμ μΌλ‘λ§
λͺ¨λ νλ μλ
Setter
non-final νλμ μμ±
μμ± μ ν¨
μμ±μ
@RequiredArgsConstructor
@AllArgsConstructor
μμ
κ°λ₯
λΆκ°λ₯
5. @Data μ¬μ©μ μ§μν΄μΌ νλ μ΄μ μ λμ
μ§μν΄μΌ νλ μ΄μ
무λΆλ³ν Setter μμ±μΌλ‘ κ°μ²΄ λ¬΄κ²°μ± μν
κ°μ²΄μ§ν₯ μ€κ³ μμΉ μΉ¨ν΄ κ°λ₯μ±
λͺ¨λ νλμ μΌκ΄ μ μ± μ μ©μΌλ‘ κ°λ³ νλ μ μ΄ μ΄λ €μ
λμ
μ λ³μ μ΄λ Έν μ΄μ μ‘°ν©
Builder ν¨ν΄ νμ©
DTOλ @Value μ¬μ©
6. μ°Έκ³
https://projectlombok.org/features/Data
https://projectlombok.org/features/Value
https://www.baeldung.com/lombok-data-annotation
https://www.javaquery.com/2020/10/lombok-data-vs-value-annotation.html
Last updated
Was this helpful?