🌱Spring Boot μ‹œλ¦¬μ¦ˆ 6β€” Annotationκ³Ό Lombok μ™„λ²½ 정리

κΉ€μ„Έν˜„Β·2025λ…„ 10μ›” 22일

Spring

λͺ©λ‘ 보기
6/19

λ‚ μ§œ:2025-10-22


ν•™μŠ΅ λͺ©ν‘œ

  • Annotation(μ–΄λ…Έν…Œμ΄μ…˜)의 κ°œλ…κ³Ό μ—­ν•  이해
  • Lombok 라이브러리의 μ£Όμš” μ–΄λ…Έν…Œμ΄μ…˜ ν•™μŠ΅ 및 ν™œμš©

βœ… 1.Annotation

μ–΄λ…Έν…Œμ΄μ…˜μ΄λž€?

-μ–΄λ…Έν…Œμ΄μ…˜(Annotation)은 μžλ°” μ½”λ“œμ— 메타데이터λ₯Ό μΆ”κ°€ν•˜μ—¬ μ»΄νŒŒμΌλŸ¬λ‚˜ λŸ°νƒ€μž„μ—μ„œ νŠΉμ • λ™μž‘μ„ μœ λ„ν•˜λŠ” 역할을 ν•œλ‹€.

  • μ‰½κ²Œ λ§ν•΄μ„œ, β€œμ½”λ“œμ— 의미λ₯Ό λΆ€μ—¬ν•΄ μ»΄νŒŒμΌλŸ¬μ—κ²Œ νŠΉμ • 행동을 μ‹œν‚€λŠ” ν‘œμ‹œβ€

βœ…2.λŒ€ν‘œμ μΈ μ–΄λ…Έν…Œμ΄μ…˜ μ’…λ₯˜

μ–΄λ…Έν…Œμ΄μ…˜μ„€λͺ…
@OverrideλΆ€λͺ¨ ν΄λž˜μŠ€λ‚˜ μΈν„°νŽ˜μ΄μŠ€μ˜ λ©”μ„œλ“œλ₯Ό μž¬μ •μ˜ν–ˆμŒμ„ λͺ…μ‹œ
@Deprecated더 이상 μ‚¬μš©ν•˜μ§€ μ•ŠλŠ” μ½”λ“œμž„μ„ ν‘œμ‹œ
@SuppressWarnings컴파일 κ²½κ³ λ₯Ό λ¬΄μ‹œν•˜λ„λ‘ μ„€μ •
@FunctionalInterfaceν•¨μˆ˜ν˜• μΈν„°νŽ˜μ΄μŠ€μž„μ„ λͺ…μ‹œ
  • μ–΄λ…Έν…Œμ΄μ…˜μ€ μ½”λ“œμ˜ 의미λ₯Ό λͺ…ν™•ν•˜κ²Œ ν•˜λ©΄μ„œ, μ»΄νŒŒμΌλŸ¬λ‚˜ λŸ°νƒ€μž„μ΄ μžλ™μœΌλ‘œ μ²˜λ¦¬ν•  수 있게 도와쀀닀.

βœ… 3.Lombok 라이브러리

Lombokμ΄λž€?

  • Lombok은 반볡적인 μ½”λ“œλ₯Ό μžλ™μœΌλ‘œ μƒμ„±ν•΄μ£ΌλŠ”μ–΄λ…Έν…Œμ΄μ…˜ 기반 μžλ°” λΌμ΄λΈŒλŸ¬λ¦¬λ‹€.

  • Lombok을 μ‚¬μš©ν•˜λ©΄ getter, setter, toString(), μƒμ„±μž λ“± λ³΄μΌλŸ¬ν”Œλ ˆμ΄νŠΈ(Boilerplate) μ½”λ“œλ₯Ό 직접 μž‘μ„±ν•  ν•„μš”κ°€ μ—†λ‹€.


λ³΄μΌλŸ¬ν”Œλ ˆμ΄νŠΈ μ½”λ“œλž€?

  • κ°œλ°œμžκ°€ 맀번 반볡적으둜 μž‘μ„±ν•΄μ•Ό ν•˜λŠ” μ½”λ“œ.
  • 예: getter, setter, μƒμ„±μž, toString() λ“±

βœ…4. Lombok μ‚¬μš© μ „κ³Ό ν›„ 비ꡐ

μ‚¬μš© μ „

public class User {
   private String name;
   private int age;

   public String getName() { return name; }
   public void setName(String name) { this.name = name; }

   public int getAge() { return age; }
   public void setAge(int age) { this.age = age; }

   @Override
   public String toString() {
       return "User{name='" + name + "', age=" + age + "}";
   }
   }

Lombok μ‚¬μš© ν›„

@Getter
    @Setter
    @ToString
    public class User {
    private String name;
    private int age;
    }
 
  • πŸ‘‰ 단 μ„Έ μ€„λ‘œ λ™μΌν•œ κΈ°λŠ₯ κ΅¬ν˜„ κ°€λŠ₯!

βœ…5. μ£Όμš” Lombok μ–΄λ…Έν…Œμ΄μ…˜ 정리

μ–΄λ…Έν…Œμ΄μ…˜μ„€λͺ…μ˜ˆμ‹œ
@Getter / @Setterλͺ¨λ“  ν•„λ“œμ˜ getter/setter μžλ™ 생성@Getter @Setter
@ToStringtoString() μžλ™ 생성@ToString(exclude = "password")
@NoArgsConstructorκΈ°λ³Έ μƒμ„±μž μžλ™ 생성@NoArgsConstructor
@AllArgsConstructorλͺ¨λ“  ν•„λ“œλ₯Ό λ§€κ°œλ³€μˆ˜λ‘œ ν•˜λŠ” μƒμ„±μž 생성@AllArgsConstructor
@RequiredArgsConstructorfinal ν•„λ“œλ§Œ ν¬ν•¨ν•œ μƒμ„±μž 생성@RequiredArgsConstructor
@Slf4jLogger μžλ™ 생성log.info("message");

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

@NoArgsConstructor
 @AllArgsConstructor
 @Getter
 @Setter
 @ToString
 public class User {
 private String name;
 private int age;
 }

@Slf4j μ˜ˆμ‹œ

@Slf4j
    public class UserService {
    public void logMessage() {
        log.info("This is a log message");
    }
    }

βœ… 마무리 μš”μ•½

ꡬ뢄핡심 포인트
Annotationμ½”λ“œμ— 의미λ₯Ό λΆ€μ—¬ν•˜κ³ , λŸ°νƒ€μž„/컴파일러 λ™μž‘μ„ μ œμ–΄
Lombokμ–΄λ…Έν…Œμ΄μ…˜μ„ 톡해 반볡 μ½”λ“œλ₯Ό μžλ™ 생성
결과가독성 ν–₯상, μœ μ§€λ³΄μˆ˜ 용이, 생산성 증가

정리

  • μ–΄λ…Έν…Œμ΄μ…˜μ€ μžλ°” μ½”λ“œμ— 의미λ₯Ό λΆ€μ—¬ν•˜κ³ ,
  • Lombok은 κ·Έ μ–΄λ…Έν…Œμ΄μ…˜μ„ 톡해 μ½”λ“œλ₯Ό κ°„κ²°ν•˜κ²Œ λ§Œλ“€μ–΄μ€€λ‹€.
  • κ²°κ΅­ κ°œλ°œμžλŠ” β€˜ν•΅μ‹¬ λ‘œμ§β€™μ—λ§Œ 집쀑할 수 있게 λœλ‹€.
profile
개발자λ₯Ό μœ„ν•œ ν•œ 걸음

0개의 λŒ“κΈ€