Search

lombok 라이브러리

lombok 라이브러리

Java ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄λ₯Ό μœ„ν•œ 라이브러리둜, 반볡적으둜 μ‚¬μš©ν•˜λŠ” μ½”λ“œλ₯Ό μžλ™μœΌλ‘œ μƒμ„±ν•΄μ£ΌλŠ” κΈ°λŠ₯을 μ œκ³΅ν•˜μ—¬ 개발 생산성을 ν–₯μƒμ‹œμΌœμ€€λ‹€.

lombok λ‹€μš΄λ‘œλ“œ

lombok 라이브러리 μΆ”κ°€ν•˜κΈ°

ν”„λ‘œμ νŠΈ > WEB-INF > lib 에 lombok.jar μΆ”κ°€

lombok 을 μ™œ μ“°λ‚˜μš”?

μžλ°” ν”„λ‘œκ·Έλž˜λ°μ—μ„œ μƒμ„±μž 및 getter & setter λ©”μ†Œλ“œ 등은 클래슀(μžλ°”λΉˆμ¦ˆ)λ₯Ό μ •μ˜ν•  λ•Œ, 맀번 반볡적으둜 μž‘μ„±ν•˜κ²Œ λ©λ‹ˆλ‹€. lombok 을 μ‚¬μš©ν•˜μ—¬ @Data λΌλŠ” μ–΄λ…Έν…Œμ΄μ…˜μ„ 뢙이면 μžλ™μœΌλ‘œ μƒμ„±μžμ™€ λ©”μ†Œλ“œλ₯Ό μƒμ„±ν•΄μ€λ‹ˆλ‹€.
클래슀 λ‚΄μ˜ μƒˆλ‘œμš΄ λ³€μˆ˜λ₯Ό μΆ”κ°€ν•˜κ±°λ‚˜ λ³€μˆ˜λͺ…을 μˆ˜μ •ν•˜λ©΄, getter, setter λ©”μ†Œλ“œλͺ…도 λ™μΌν•˜κ²Œ μˆ˜μ •ν•΄μ•Όν•˜λŠ”λ°, 이 λ•Œ lombok 을 μ‚¬μš©ν•˜λ©΄, λ³„λ„λ‘œ μˆ˜μ •ν•˜μ§€ μ•Šμ•„λ„ μžλ™μ„ μ μš©λ˜λŠ” 이점이이 μžˆμŠ΅λ‹ˆλ‹€.

μ£Όμš” κΈ°λŠ₯

β€’
μƒμ„±μž 및 λ©”μ†Œλ“œ(getter, setter, toString) μžλ™ 생성
β€’
λ‘œκΉ… ν•„λ“œ 생성
β€’
λΉŒν„° νŒ¨ν„΄ 객체 생성
β€’
λΆˆλ³€ 클래슀 생성

μ£Όμš” μ–΄λ…Έν…Œμ΄μ…˜

둬볡 라이브러리λ₯Ό μ‚¬μš©ν•˜λ©΄, μ–΄λ…Έν…Œμ΄μ…˜μ„ μ§€μ •ν•˜μ—¬ 반볡적이 μ½”λ“œλ₯Ό μžλ™μœΌλ‘œ μƒμ„±ν•΄μ€λ‹ˆλ‹€.
μ–΄λ…Έν…Œμ΄μ…˜
μ„€λͺ…
@Getter
ν•„λ“œμ— λŒ€ν•œ getter λ©”μ„œλ“œλ₯Ό μƒμ„±ν•©λ‹ˆλ‹€.
@Setter
ν•„λ“œμ— λŒ€ν•œ setter λ©”μ„œλ“œλ₯Ό μƒμ„±ν•©λ‹ˆλ‹€.
@ToString
toString() λ©”μ„œλ“œλ₯Ό μƒμ„±ν•˜μ—¬ 객체의 λ‚΄μš©μ„ λ¬Έμžμ—΄λ‘œ 좜λ ₯ν•©λ‹ˆλ‹€.
@EqualsAndHashCode
equals() 및 hashCode() λ©”μ„œλ“œλ₯Ό μƒμ„±ν•©λ‹ˆλ‹€.
@NoArgsConstructor
λ§€κ°œλ³€μˆ˜κ°€ μ—†λŠ” κΈ°λ³Έ μƒμ„±μžλ₯Ό μƒμ„±ν•©λ‹ˆλ‹€.
@RequiredArgsConstructor
final ν•„λ“œ λ˜λŠ” @NonNull μ• λ…Έν…Œμ΄μ…˜μ΄ μ§€μ •λœ ν•„λ“œλ₯Ό 인자둜 λ°›λŠ” μƒμ„±μžλ₯Ό μƒμ„±ν•©λ‹ˆλ‹€.
@AllArgsConstructor
λͺ¨λ“  ν•„λ“œλ₯Ό 인자둜 λ°›λŠ” μƒμ„±μžλ₯Ό μƒμ„±ν•©λ‹ˆλ‹€.
@Builder
λΉŒλ” νŒ¨ν„΄μ„ μžλ™μœΌλ‘œ μƒμ„±ν•˜μ—¬ 객체λ₯Ό μƒμ„±ν•©λ‹ˆλ‹€.
@Data
@ToString, @EqualsAndHashCode, @Getter, @Setter, @RequiredArgsConstructorλ₯Ό ν•œλ²ˆμ— μ§€μ •ν•©λ‹ˆλ‹€.
@Value
λΆˆλ³€ 클래슀λ₯Ό μƒμ„±ν•©λ‹ˆλ‹€.
@Slf4j
SLF4Jλ₯Ό μ‚¬μš©ν•˜μ—¬ κ°„λ‹¨ν•œ λ‘œκΉ…μ„ μœ„ν•œ log ν•„λ“œλ₯Ό μƒμ„±ν•©λ‹ˆλ‹€.

μ˜ˆμ‹œμ½”λ“œ

β€’
@NoArgsConstructor
β€’
@AllArgsConstructor
β€’
@Getter & @Setter
β€’
@ToString
β€’
@Data
β€’
@Slf4j

@NoArgsConstructor

λ§€κ°œλ³€μˆ˜κ°€ μ—†λŠ” κΈ°λ³Έ μƒμ„±μžλ₯Ό μžλ™μœΌλ‘œ μƒμ„±ν•©λ‹ˆλ‹€
import java.util.Date; import lombok.NoArgsConstructor; @NoArgsConstructor public class User { private String id; private String username; private String password; private Date regDate; private Date updDate; }
Java
볡사

적용 결과

@AllArgsConstructor

λͺ¨λ“  ν•„λ“œλ₯Ό 인자둜 λ°›λŠ” μƒμ„±μžλ₯Ό μžλ™μœΌλ‘œ μƒμ„±ν•©λ‹ˆλ‹€.
import java.util.Date; import lombok.AllArgsConstructor; @AllArgsConstructor public class User { private String id; private String username; private String password; private Date regDate; private Date updDate; }
Java
볡사

적용 결과

@Getter & @Setter

ν•„λ“œμ— λŒ€ν•œ getter 및 setter λ©”μ„œλ“œλ₯Ό μžλ™μœΌλ‘œ μƒμ„±ν•©λ‹ˆλ‹€.
import java.util.Date; import lombok.Getter; import lombok.Setter; @Getter @Setter public class User { private String id; private String username; private String password; private Date regDate; private Date updDate; }
Java
볡사

적용 결과

@ToString

toString() λ©”μ„œλ“œλ₯Ό μžλ™μœΌλ‘œ μƒμ„±ν•˜μ—¬ 객체의 λ‚΄μš©μ„ λ¬Έμžμ—΄λ‘œ 좜λ ₯ν•©λ‹ˆλ‹€.
import java.util.Date; import lombok.ToString; @ToString public class User { private String id; private String username; private String password; private Date regDate; private Date updDate; }
Java
볡사

적용 결과

@Data

@ToString, @EqualsAndHashCode, @Getter, @Setter, @RequiredArgsConstructor λ₯Ό ν•œλ²ˆμ— μ§€μ •ν•©λ‹ˆλ‹€.
import java.util.Date; import lombok.Data; @Data public class User { private String id; private String username; private String password; private Date regDate; private Date updDate; }
Java
볡사

적용 결과

@Slf4j

κ°„λ‹¨ν•œ λ‘œκΉ…μ„ μœ„ν•œ log ν•„λ“œλ₯Ό μƒμ„±ν•©λ‹ˆλ‹€.
@Slf4j public class Main { public static void main(String[] args) { String msg = "λ©”μ‹œμ§€ μž…λ‹ˆλ‹€."; log.info("둜그 λ©”μ‹œμ§€: {}", msg); } }
Java
볡사

적용 결과

둜그 λ©”μ‹œμ§€: λ©”μ‹œμ§€ μž…λ‹ˆλ‹€.
Java
볡사