Spring/강의

[📕 기초 Spring] 2-2. 어노테이션(Annotation) 이론

가지코딩 2025. 5. 3. 15:48

📕 목차

  1. 어노테이션(Annotation)
  2. Lombok

1. 어노테이션(Annotation)

어노테이션(Annotation)

  • 코드에 메타데이터를 추가하는 기능으로, 컴파일러나 런타임 환경에 특정 동작을 지시할 수 있다.
    • 주석은 사람에게, 어노테이션은 프로그램에게 정보를 제공한다.
    • @ 기호로 시작하며 클래스, 메서드, 변수 등 다양한 요소에 적용 가능하다.

 

내장 어노테이션

  • @Override: 상위 클래스의 메서드를 재정의함을 명시
  • @Deprecated: 해당 요소가 더 이상 사용되지 않음을 나타냄
  • @SuppressWarnings: 컴파일러 경고 억제 (unused, unchecked 등)

 

사용자 정의 어노테이션

  • 직접 정의 가능
  • AOP 등 고급 기능 구현 시 사용됨 (심화 과정에서 다룰 예정)

2. Lombok

Lombok

  • 반복적인 보일러플레이트 코드 생성을 자동화해주는 라이브러리로, 어노테이션 기반으로 작동한다.

 

* 보일러플레이트 코드란?

  • getter/setter, 생성자, toString 등 반복적으로 작성해야 하는 코드

 

설치

 

  1. IntelliJ 설정에서 Enable annotation processing 활성화
  2. Plugins에서 Lombok 설치 후 IDE 재시작

 

 

 

Lombok 주요 어노테이션

 

  • @Getter, @Setter
    • 클래스의 모든 필드에 대해 getter와 setter 메서드를 자동으로 생성한다.
  • @ToString
    • toString() 메서드를 자동으로 생성한다. 기본적으로 클래스의 모든 필드를 포함하며, 특정 필드를 제외하거나 포맷을 지정할 수 있다.
  • @EqualsAndHashCode
    • equals()와 hashCode() 메서드를 자동으로 생성한다. 객체의 동일성과 해시 코드를 정의한다.
  • @NoArgsConstructor
    • 기본 생성자를 생성한다.
  • @AllArgsConstructor
    • 모든 필드를 매개변수로 받는 생성자를 생성한다.
  • @RequiredArgsConstructor
    • final 필드만을 매개변수로 받는 생성자를 생성한다.
  • @Data
    • @Getter, @Setter, @ToString, @EqualsAndHashCode, @RequiredArgsConstructor를 한꺼번에 적용하는 어노테이션이다.
  • @Builder
    • 빌더 패턴을 적용하여 객체를 생성할 수 있게 한다. 필드 이름을 명시적으로 지정하면서 객체를 생성할 수 있다.
  • @Slf4j
    • 클래스에 로그를 남기기 위한 Logger 객체를 자동으로 생성한다. log.info()와 같은 로그 메서드를 사용할 수 있게 한다.