자바 애노테이션 프로세싱과 컴파일 타임 코드 생성

자바 애노테이션 프로세싱이란?

자바 애노테이션 프로세싱은 자바 소스 코드에서 애노테이션을 처리하는 기술로, 컴파일 타임에 코드를 생성하거나 다른 코드를 수정하는 등의 작업을 할 수 있습니다. 이 기술을 사용하면 코드 생성이 자동화되며, 코드의 가독성과 유지보수성이 향상됩니다.

애노테이션은 자바 소스 코드에서 메타데이터를 나타내는 특별한 형식의 주석입니다. 예를 들어, @Override 애노테이션은 메서드가 슈퍼 클래스나 인터페이스에서 상속받은 메서드를 오버라이드하는 것임을 나타냅니다. 애노테이션은 프로그래머가 직접 정의할 수도 있고, 자바 표준 라이브러리에서 제공하는 애노테이션을 사용할 수도 있습니다.

자바 애노테이션 프로세싱은 JDK 5부터 지원되며, javax.annotation.processing 패키지에서 제공하는 API를 사용합니다.

Annotation Processing

애노테이션 프로세싱 API 사용 방법

애노테이션 프로세싱 API는 javax.annotation.processing 패키지에 포함되어 있습니다. 이 API를 사용하려면 다음과 같은 요소가 필요합니다.

  • AbstractProcessor 클래스를 상속한 클래스
  • @SupportedAnnotationTypes 애노테이션을 사용하여 처리할 애노테이션의 FQCN(Fully Qualified Class Name) 목록을 지정
  • @SupportedSourceVersion 애노테이션을 사용하여 지원하는 자바 소스 버전을 지정
  • process() 메서드를 오버라이드하여 애노테이션 처리 로직을 작성

다음은 애노테이션 프로세싱 API를 사용하여 @Getter 애노테이션을 처리하는 간단한 예제입니다.


@SupportedAnnotationTypes("lombok.Getter")
@SupportedSourceVersion(SourceVersion.RELEASE_8)
public class GetterProcessor extends AbstractProcessor {
    @Override
    public boolean process(Set