lombok

Annotation

Annotation Description
@NonNull Null 값이 될 수 μ—†λ‹€λŠ” 것을 λͺ…μ‹œν•©λ‹ˆλ‹€.
NPE(Null Pointer Exception)에 λŒ€ν•œ λŒ€λΉ„μ±…μ΄ 될 수 μžˆμŠ΅λ‹ˆλ‹€.
@Cleanup μžλ™μœΌλ‘œ close() λ©”μ„œλ“œλ₯Ό ν˜ΈμΆœν•©λ‹ˆλ‹€.
@Getter/@Setter μ½”λ“œκ°€ 컴파일될 λ•Œ getter() / setter() λ©”μ„œλ“œλ₯Ό μƒμ„±ν•©λ‹ˆλ‹€.
@ToString toString() λ©”μ„œλ“œλ₯Ό μƒμ„±ν•©λ‹ˆλ‹€. @ToString(exclude={"μ œμ™Έν•  κ°’"}) 처럼 μ›ν•˜μ§€ μ•ŠλŠ” 속성은 μ œμ™Έν•  수 μžˆμŠ΅λ‹ˆλ‹€.
@EqualsAndHashCode ν•΄λ‹Ή 객체의 equals() 와 hashCode() λ©”μ„œλ“œλ₯Ό μƒμ„±ν•©λ‹ˆλ‹€.
@NoArgsConstructor νŒŒλΌλ―Έν„°λ₯Ό 받지 μ•ŠλŠ” μƒμ„±μžλ₯Ό λ§Œλ“€μ–΄λƒ…λ‹ˆλ‹€.
@RequiredArgsConstructor μ§€μ •λœ 속성듀에 λŒ€ν•΄μ„œ μƒμ„±μžλ₯Ό λ§Œλ“€μ–΄λƒ…λ‹ˆλ‹€.
@AllArgsConstructor λͺ¨λ“  속성에 λŒ€ν•΄μ„œ μƒμ„±μžλ₯Ό λ§Œλ“€μ–΄λƒ…λ‹ˆλ‹€.
@Data μœ„ 5가지 μ–΄λ…Έν…Œμ΄μ…˜μ„ ν•©μΉœ μ–΄λ…Έν…Œμ΄μ…˜μž…λ‹ˆλ‹€.
@Value λΆˆλ³€ 클래슀λ₯Ό 생성할 λ•Œ μ‚¬μš©ν•©λ‹ˆλ‹€.
@Builder λΉŒλ” νŒ¨ν„΄μ„ μ‚¬μš©ν•  수 μžˆλ„λ‘ μ½”λ“œλ₯Ό μƒμ„±ν•©λ‹ˆλ‹€.
@SneakyThrows μ˜ˆμ™Έ λ°œμƒμ‹œ Throwable νƒ€μž…μœΌλ‘œ λ°˜ν™˜ν•©λ‹ˆλ‹€.
@Syncronized λ©”μ„œλ“œμ—μ„œ 동기화λ₯Ό μ„€μ •ν•©λ‹ˆλ‹€.
@Getter(lazy=true) 동기화λ₯Ό μ΄μš©ν•΄μ„œ 졜초 ν•œλ²ˆλ§Œ getter()λ₯Ό ν˜ΈμΆœν•©λ‹ˆλ‹€.

@Data

ν•΄λ‹Ή μ–΄λ…Έν…Œμ΄μ…˜μ€ λ‹€μŒμ„ ν¬ν•¨ν•œλ‹€.

  • @ToString
  • @EqualsAndHashCode
  • @Getter
  • @Setter
  • @RequiredArgsConstructors

lombok μ‚¬μš©μ‹œ @Data μ–΄λ…Έν…Œμ΄μ…˜μ„ μ‚¬μš©ν•˜λ©΄ μžλ™μœΌλ‘œ Setter λ₯Ό ν¬ν•¨ν•œ
λ‹€λ₯Έ κΈ°λŠ₯듀도 μžλ™μœΌλ‘œ μ§€μ›ν•˜κ²Œ λœλ‹€.

WARNING

  • λ¬΄λΆ„λ³„ν•˜κ²Œ Setter λ©”μ„œλ“œλ₯Ό μ‚¬μš©μ‹œ 객체의 일관성을 μœ μ§€ν•˜κΈ° μ–΄λ ΅λ‹€.
  • μ΄λŠ” 객체에 setter() λ©”μ„œλ“œκ°€ μžˆμ„ 경우 μ–Έμ œλ“  객체에 μ ‘κ·Όν•˜μ—¬ μƒνƒœ ν˜Ήμ€ 값을 λ°”κΏ€μˆ˜ 있기 λ•Œλ¬Έμ΄λ‹€.

참고자료

https://cheese10yun.github.io/lombok

@EqualsAndHashCode

기본적으둜 equals() hashCode() λ©”μ„œλ“œλ₯Ό 생성해쀀닀.

static μ΄λ‚˜ transient κ°€ μ•„λ‹Œ λͺ¨λ“  ν•„λ“œκ°€ λŒ€μƒμ΄ λœλ‹€.

transient ν‚€μ›Œλ“œ

Serialize κ³Όμ •μ—μ„œ μ œμ™Έν•˜κ³  싢은 경우 μ‚¬μš©ν•œλ‹€.

  • νŒ¨μŠ€μ›Œλ“œμ™€ 같은 λ³΄μ•ˆ 정보가 직렬화 (Serialize) κ³Όμ •μ—μ„œ μ œμ™Έν•˜κ³  싢은 경우 μ‚¬μš©λœλ‹€.
  • λ‹€μ–‘ν•œ 이유둜 데이터λ₯Ό 전솑 ν•˜κ³  싢지 μ•Šμ„λ•Œ μ„ μ–Έν•œλ‹€.

λͺ…μ‹œμ μœΌλ‘œ μ œμ™Έκ°€ ν•„μš”ν•œ 경우 exclude λ‚˜ of μ˜΅μ…˜μ„ μ‚¬μš©ν•˜λ„λ‘ ν•œλ‹€.

  • exclude : μ œμ™Έ
  • of : 포함

기본적으둜 getterκ°€ 있으면 ν•΄λ‹Ή λ©”μ„œλ“œκ°€ ν˜ΈμΆœλœλ‹€.
이λ₯Ό μ‚¬μš©ν•˜μ§€ μ•Šκ³  직접 ν˜ΈμΆœν•˜λ €λ©΄ doNotUseGetter = true λ₯Ό μ‚¬μš©ν•˜λΌ

callSuper = "true" λ₯Ό μ‚¬μš©μ‹œμ—λŠ” μ£Όμ˜ν•΄μ•Ό ν•œλ‹€.

  • super class κ°€ μ—†μ„λ•Œ μ‚¬μš©ν•˜λ©΄ compile error
  • super class 도 lombok 을 μ‚¬μš©ν•˜λ©΄ λ¬Έμ œκ°€ μ—†μ§€λ§Œ 그렇지 μ•Šλ‹€λ©΄ μ˜ˆμƒμΉ˜ λͺ»ν•œ μ—λŸ¬κ°€ λ°œμƒλ  μˆ˜λ„ μžˆλ‹€.