[Spring 입문] Annotation

박화랑·2025년 3월 17일

Spring_개념정리

목록 보기
7/17

Annotation

1. Annotation이란?

  • 코드에 메타데이터를 추가할 수 있는 기능 제공
  • 코드에 특별한 의미를 부여하거나, 컴파일러와 런타임에서 특정 동작을 트리거하기 위해 사용됨
  • 주석은 사람에게 정보 제공, 어노테이션은 프로그램이 활용할 정보 전달

어노테이션은 코드의 의미를 명확하게 하고, 특정 기능을 쉽게 적용할 수 있도록 도와줌

어노테이션 기본 개념

  • @ 기호로 시작하며, 클래스, 메서드, 변수, 매개변수, 패키지 등에 추가 가능

내장 어노테이션

  • @Override : 메서드가 상위 클래스나 인터페이스의 메서드를 오버라이딩하고 있음을 나타냄
    • 컴파일러가 실제로 오버라이드가 맞는지 검사
  • @Deprecated : 더 이상 사용되지 않는 요소를 표시
    • 사용 시 컴파일 경고 발생
  • @SuppressWarnings : 컴파일러 경고 억제
    • 사용되지 않는 변수 등의 경고 무시 가능

내장 어노테이션은 코드의 안정성과 유지보수성을 높이는 데 도움을 줌

사용자 정의 어노테이션

  • 개발자가 직접 어노테이션을 정의하여 특정 메타데이터 추가 가능
  • AOP(Aspect-Oriented Programming) 등과 결합하여 다양한 기능 구현 가능

사용자 정의 어노테이션을 활용하면 프로젝트의 특정 요구사항을 쉽게 반영 가능


Lombok

1. Lombok이란?

  • 보일러플레이트 코드(반복적인 getter/setter, 생성자 등)를 자동 생성하여 코드 가독성과 유지보수성 향상

Lombok을 사용하면 코드의 가독성이 향상되며 유지보수가 편리해짐

Lombok 설정 (IntelliJ)

  1. 플러그인 설치Lombok 검색 후 설치
  2. Annotation Processing 활성화
    • Ctrl + Alt + S (Windows) 또는 Cmd + , (Mac)
    • "Annotation Processors" 검색 → "Enable annotation processing" 체크 후 적용

Lombok 주요 어노테이션

@Getter, @Setter → 모든 필드의 getter, setter 자동 생성

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

getter/setter를 자동으로 생성하여 코드 중복을 줄일 수 있음

@ToStringtoString() 자동 생성

@ToString
public class User {
    private String name;
    private int age;
}

객체의 정보를 문자열로 쉽게 출력할 수 있음

@EqualsAndHashCodeequals()hashCode() 자동 생성

@EqualsAndHashCode
public class User {
    private String name;
    private int age;
}

객체 비교를 간편하게 처리할 수 있음

@NoArgsConstructor, @AllArgsConstructor → 기본 생성자 및 모든 필드를 포함하는 생성자 자동 생성

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

생성자 생성의 번거로움을 줄일 수 있음

@Data@Getter, @Setter, @ToString, @EqualsAndHashCode, @RequiredArgsConstructor 포함

@Data
public class User {
    private String name;
    private int age;
}

Lombok의 여러 기능을 한 번에 적용하여 간편하게 사용 가능

@Builder → 빌더 패턴 적용

@Builder
public class User {
    private String name;
    private int age;
}

사용 예시

User user = User.builder()
                .name("John")
                .age(30)
                .build();

객체 생성 시 가독성과 유연성을 높일 수 있음

@Slf4jLogger 객체 자동 생성하여 로그 작성 가능

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

로깅을 간편하게 처리할 수 있어 디버깅과 운영 모니터링에 유용함


정리

  • Annotation: 코드에 메타데이터 추가, 특정 동작 트리거 가능
  • Lombok: 보일러플레이트 코드 제거, 유지보수성 및 가독성 향상
  • 주요 Lombok 어노테이션: @Getter, @Setter, @ToString, @EqualsAndHashCode, @NoArgsConstructor, @AllArgsConstructor, @Data, @Builder, @Slf4j
profile
개발자 희망생

0개의 댓글